Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/07/2011, 12:51
alejandrovalenciaw
 
Fecha de Ingreso: mayo-2007
Ubicación: Madrid
Mensajes: 4
Antigüedad: 16 años, 11 meses
Puntos: 0
Validar campos imput dinamicos

Hola a todo no se mucho de Javascript tengo el siguiente problema.
En firefox se bloquea por completo y hay q cerrarlo con administrador de tarea y con crome no hace nada,
Cuando adjuntas el fichero y le das a enviar se bloquea.
pero si le das a enviar con los campo vacios si valida correctamente.


Quintando la validación function validar() y colocando los botones normales Submit Si funciona, genera lo imput y envía el fichero. Pero cuando le coloco el código validar() funciona la validación, genera los imput dinamicos , pero no envía a la pagina php por que se bloquea el navegador


Creo que el problema esta en el orden de cómo se coloca las Funciones (es una idea.)



Si ves abajo en el código HTML llamamos a 2 funciones una que genera los imput y otra que valida.

ESTA 2 SON addCampo() Y VALIDAR()

Puede ser que el código tenga 2 tipos de submit diferentes.


(y)estoy seguro que no es problema del navegador algo pasa en una parte del codigo .


<script type="text/javascript">
var numero = 0; //Esta es una variable de control para mantener nombres
//diferentes de cada campo creado dinamicamente.

evento = function (evt) { //esta funcion nos devuelve el tipo de evento disparado
return (!evt) ? event : evt;
}
//Aqui se hace lamagia... jejeje, esta funcion crea dinamicamente los nuevos campos file
addCampo = function () {
//Creamos un nuevo div para que contenga el nuevo campo
nDiv = document.createElement('div');

//con esto se establece la clase de la div
nDiv.className = 'archivo';

//este es el id de la div, aqui la utilidad de la variable numero
//nos permite darle un id unico
nDiv.id = 'file' ( numero);

//creamos el input para el formulario:
nCampo = document.createElement('input');

//le damos un nombre, es importante que lo nombren como vector, pues todos los campos
//compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php

nCampo.name = 'archivos[]';
//Establecemos el tipo de campo
nCampo.type = 'file';

//Ahora creamos un link para poder eliminar un campo que ya no deseemos
a = document.createElement('a');
//El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla

a.name = nDiv.id;
//Este link no debe ir a ningun lado
a.href = '#';
//Establecemos que dispare esta funcion en click

a.onclick = elimCamp;
//Con esto ponemos el texto del link
a.innerHTML = 'Eliminar';

//Bien es el momento de integrar lo que hemos creado al documento,

//primero usamos la función appendChild para adicionar el campo file nuevo
nDiv.appendChild(nCampo);
//Adicionamos el Link
nDiv.appendChild(a);

//Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
//con esta función obtenemos una referencia a ella para usar de nuevo appendChild

//y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
container = document.getElementById('adjuntos');
container.appendChild(nDiv);
}

//con esta función eliminamos el campo cuyo link de eliminación sea presionado
elimCamp = function (evt){
evt = evento(evt);
nCampo = rObj(evt);
div = document.getElementById(nCampo.name);
div.parentNode.removeChild(div);
}

//con esta función recuperamos una instancia del objeto que disparo el evento
rObj = function (evt) {
return evt.srcElement ? evt.srcElement : evt.target;
}
//************************************************** ***********************************
function validar()
{
inputs = document.getElementsByName('archivos[]');

for (i=0; i<inputs.length; i )
{
if (inputs.value == '')
{
alert("¡Aún hay campos sin rellenar!");
return false
}
}
document.formu.submit();
}
</script>


//este es el form que estoy utilizando

<form name="formu" id="formu" action="phpself.php" method="post" enctype="multipart/form-data">


//en este se genera los campo de eliminar.
<dt><a href="#" onClick="addCampo()">Subir otro archivo[/url]</dt>


//este es para enviar es cuando se bloquea el navegador.
<dd><input type="button" id="envia" name="envia" value="Enviar" onClick="validar();" /></dd>