Ver Mensaje Individual
  #9 (permalink)  
Antiguo 27/09/2011, 07:30
Avatar de nolose
nolose
 
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema con validacion Field

Ok, procedo a pegar todo el material:


Fichero .js (Que añade o borra un Field para examinar la imagen)

Código Javascript:
Ver original
  1. var numero = 0;
  2.  
  3. // Funciones comunes
  4. c= function (tag) { // Crea un elemento
  5.    return document.createElement(tag);
  6. }
  7. d = function (id) { // Retorna un elemento en base al id
  8.    return document.getElementById(id);
  9. }
  10. e = function (evt) { // Retorna el evento
  11.    return (!evt) ? event : evt;
  12. }
  13. f = function (evt) { // Retorna el objeto que genera el evento
  14.    return evt.srcElement ?  evt.srcElement : evt.target;
  15. }
  16.  
  17. addField = function () {
  18.     if(numero<9)
  19.     {
  20.        container = d('files');
  21.        
  22.        span = c('SPAN');
  23.        span.className = 'file';
  24.        span.id = 'file' + (++numero);
  25.    
  26.        field = c('INPUT');  
  27.        field.name = 'archivos[]';
  28.        field.type = 'file';
  29.        
  30.        a = c('A');
  31.        a.name = span.id;
  32.        a.href = '#ancla_insert';
  33.        a.onclick = removeField;
  34.        a.className = 'texto_azul_link';
  35.        a.innerHTML = '&laquo; Quitar';
  36.    
  37.        span.appendChild(field);
  38.        span.appendChild(a);
  39.        container.appendChild(span);
  40.     }
  41. }
  42. removeField = function (evt) {
  43.    lnk = f(e(evt));
  44.    span = d(lnk.name);
  45.    span.parentNode.removeChild(span);
  46.    
  47.    numero--;
  48. }


Control de errores: (Esto es lo que no funciona):
Esto se ejecuta al pulsar "enviar" en el formulario:
<form name="f1" action="func/func_nueva_ficha.php" method="post" onsubmit="return valida_nueva_ficha(this)" enctype="multipart/form-data">

Código Javascript:
Ver original
  1. for(m=0;m<archivos.length;m++)
  2. {
  3.             if(archivos[m].type== "file")
  4.             {
  5.                   if(archivos[m].value.substring(archivos[m].value.length-3,archivos[m].value.length).toLowerCase() != "jpg")
  6.                   {
  7.                         alert("Debes insertar sólo archivos de tipo jpg");
  8.                    }
  9.         }  
  10. }


También he probado a hacer esto: (pero esque, ni me detecta que los Field estan vacios :S:S.

Código Javascript:
Ver original
  1. if(document.getElementById(id).value == "")
  2. {
  3.     alert("El Field no puede estar vacio!!");
  4. }

Función .php que procesa las imagenes (con los datos recibidos de "archivos")
(Lo pongo a modo informativo... por si consigues sacar algo sobre el funcionamiento de archivos, yo entiendo que es un vector que va almacenando el contenido de los distintos Fields :S)

Código PHP:
    //Capturar nombre y subir imagenes al servidor
    
$archivos '';
    if (isset (
$_FILES["archivos"])) {
        foreach (
$_FILES["archivos"]["error"] as $key => $error) {
            if (
$error == UPLOAD_ERR_OK) {
                
$tmp_name $_FILES["archivos"]["tmp_name"][$key];
                                        
                
$name $_FILES["archivos"]["name"][$key];
                
$name uniqid('bc') . '_' $name# Generar un nombre unico para el archivo
                
                //Almacenamos el nombre de la imagen en un vector con pos i
                
$i=$i+1;
                
$img[$i] = $name;
                
                
//Guardar el archivo en una ubicacin. Debe tener los permisos necesarios
                
move_uploaded_file($tmp_name"../../images/$name");
                
                
//---------------------
                //CODIGO DE REDIMENSION
                
$dir "../../images/"//Ruta donde guardamos las imagenes
                
$ancho 582
                
$alto 437;
                
                
$fuente imagecreatefromjpeg($dir.$name);
                
                
//Obtenemos las dimensiones de la imagen original
                
$imgAncho imagesx($fuente);
                
$imgAlto =imagesy($fuente);
                
                
//Si la imagen está en vertical... (le damos la vuelta)
                
if($imgAncho<$imgAlto)
                {
                    
$tamAux $ancho;
                    
$ancho $alto;
                    
$alto $tamAux;
                }
                
                
$imagen imagecreatetruecolor($ancho,$alto);
                
                
//Efectua la redimension
                
imagecopyresampled($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto); 
                
imagejpeg($imagen,$dir.$name);
                
                if(
$i==1){
                    
//---------------------------
                    //CODIGO DE REDIMENSION THUMB
                    
$thumb_prefijo "thumb_"//Prefijo para el thumb
                    
$thumb_ancho140//Nuevo ancho
                    
$thumb_alto105//Nuevo alto
                    
                    
$thumb_fuente imagecreatefromjpeg($dir.$name);
                    
                    
//Obtenemos las dimensiones de la imagen original
                    
$thumb_imgAncho imagesx($thumb_fuente);
                    
$thumb_imgAlto =imagesy($thumb_fuente);
                    
                    
//Si la imagen está en vertical... (le damos la vuelta)
                    
if($thumb_imgAncho<$thumb_imgAlto)
                    {
                        
$thumb_tamAux $thumb_ancho;
                        
$thumb_ancho $thumb_alto;
                        
$thumb_alto $thumb_tamAux;
                    }
                    
                    
$thumb_imagen imagecreatetruecolor($thumb_ancho,$thumb_alto);
                    
                    
//Efectua la redimension                    
                    
imagecopyresampled($thumb_imagen,$thumb_fuente,0,0,0,0,$thumb_ancho,$thumb_alto,$thumb_imgAncho,$thumb_imgAlto); 
                    
//La salvamos con el nombre y en el lugar que nos interesa.
                    
imagejpeg($thumb_imagen,$dir.$thumb_prefijo.$name);
                    
#Redimension
                
#if                   
            
#if
        
#foreach
    
#i 

Nota: Si pongo comprobaciones (un alert por ejemplo) con otros campos del formulario que no se el Field, si me los valida crrectamente. Solo tengo problemas con el Field.


Muchas gracias por tu ayuda IsaBelM :)

Última edición por nolose; 27/09/2011 a las 07:35