Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2015, 22:40
andre___5025
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Validar tipos de archivos antes de subiros al servidor

Buen dia amigos, tengo un script para subir archivos el cual el usuario puede añadir o eliminar campos tipo="file" en caso de que no se sabe cuantos archivos desea subir.
Tengo otro script para validar cuales tipos de archivos se deben adjuntar, funciona muy bien cuando se esta utilizando el primer campo tipo file pero cuando se va a hacer en el segundo en adelante la validacion de tipod de archivos se pierde y ya no se ejecuta este script. Alguien me puede ayudar por favor en guiarme en donde estoy fallando, se lo agradeceria mucho.

Script que agrega o elimina dinamicamente los campos tipo file:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. var numero = 0;  
  3. evento = function (evt) {  
  4. return (!evt) ? event : evt;
  5. }
  6. addCampo = function () {  
  7. nDiv = document.createElement('div');  
  8. nDiv.className = 'archivo';
  9. nDiv.id = 'file' + (++numero);  
  10. nCampo = document.createElement('input');
  11. nCampo.name = 'archivos[]';  
  12. nCampo.type = 'file';  
  13. a = document.createElement('a');  
  14. a.name = nDiv.id;  
  15. a.href = '#';  
  16. a.onclick = elimCamp;  
  17. a.innerHTML = 'Eliminar';
  18. nDiv.appendChild(nCampo);  
  19. nDiv.appendChild(a);
  20. container = document.getElementById('adjuntos');
  21. container.appendChild(nDiv);
  22. }  
  23. elimCamp = function (evt){
  24. evt = evento(evt);
  25. nCampo = rObj(evt);
  26. div = document.getElementById(nCampo.name);
  27. div.parentNode.removeChild(div);
  28. }  
  29. rObj = function (evt) {
  30. return evt.srcElement ? evt.srcElement : evt.target;
  31. }
  32. </script>

Script que valida el tipo de archivo permitido a adjuntar:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.             function validar(f) {
  3.                 enviar = /\.(jpg|pdf)$/i.test(f.archivos.value);
  4.                 if (!enviar)    alert("seleccione imagen");
  5.                 return enviar;
  6.             }
  7.  
  8.             function limpiar()  {
  9.                 f = document.getElementById("archivos[]");
  10.                 nuevoFile = document.createElement("input");
  11.                 nuevoFile.id = f.id;
  12.                 nuevoFile.type = "file";
  13.                 nuevoFile.name = "archivos[]";
  14.                 nuevoFile.value = "";
  15.                 nuevoFile.onchange = f.onchange;
  16.                 nodoPadre = f.parentNode;
  17.                 nodoSiguiente = f.nextSibling;
  18.                 nodoPadre.removeChild(f);
  19.                 (nodoSiguiente == null) ? nodoPadre.appendChild(nuevoFile):
  20.                     nodoPadre.insertBefore(nuevoFile, nodoSiguiente);
  21.             }
  22.            
  23.             function checkear(f)    {
  24.                 function no_prever() {
  25.                     alert("El formato del archivo no es valido. Adjunte archivos con extension .(JPG,PDF)");
  26.                     limpiar();
  27.                 }
  28.                 (/\.(jpg|pdf)$/i.test(f.value)) ? prever() : no_prever();
  29.             }
  30.         </script>

Campo tipo file que se muestra inicialmente para adjuntar archivos:
Código HTML:
Ver original
  1. <form name="formu" id="formu" method="post" enctype="multipart/form-data">
  2. <dl>
  3. <dt><label>Archivos a Subir:</label></dt>  
  4. <dd><div id="adjuntos">
  5. <input type="file" name="archivos[]" id="archivos[]" onchange="checkear(this)"><br />
  6. </div></dd>
  7. <dt><a href="#" onClick="addCampo()">Subir otro archivo</a></dt>
  8. <dd><br><input type="submit" value="Enviar" id="enviar" name="enviar" /></dd>
  9. </dl>
  10. </form>