• Publicidad

Validar opción elegida en un Select o combo

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Validar opción elegida en un Select o combo

Notapor rookie » 2006-05-12 12:52 @577

Saludos a todos.

Tengo un formulario que incluye 1 Select, 3 cajas de texto y un botón.
Cuando doy click en el botón, se entra a una función que valida los valores colocados en las cajas de texto y que se haya elegido algún valor del Select. Si todo está bien, coloca los valores en una tabla en postgresql.
La validación de las cajas se realiza sin problemas, pero no logro validar que se haya elegido un valor del Select, ya que cuando no se elige ningún valor el atributo value se queda vacío.
He revisado algunos ejemplos, pero la validación se realiza con un evento OnBlur, lo que obliga a seleccionar un valor de la lista para poder avanzar. Pero en mi caso, se pinta todo el formulario primero y despues se valida.

Agradezco de antemano su ayuda.... Hasta pronto.
rookie
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2006-03-01 18:48 @825

Publicidad

Notapor kidd » 2006-05-12 16:26 @726

Hola:

Te pido que pongas el código JavaScript que estás usando ahorita para hacer la validación.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor rookie » 2006-05-12 16:56 @747

Para evitar confusiones... he puesto todo mi código .... ojalá no esté muy enredado...
Aquí está:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
require( '../control/config.php' );
  require_once($SSConfig_absolut_path.'includes/database.pgsql.php');
  $database = new database( $SSConfig_host, $SSConfig_BD_usr, $SSConfig_BD_pass, $SSConfig_padron, $SSConfig_BD_port );

 
  function genera_doctos()
{    $conexion=pg_connect("dbname=padron_unique user=postgres password=postgres") OR die ("No se pudo conectar a la BD");
     $sql="select * from rel_doctos order by id_rel_docto;";
     $consulta=@pg_query($conexion,$sql);
     echo "<select class='combo' id='select_0' name='select_0' size='8'>";  //objeto del formulario
     while($registro=@pg_fetch_row($consulta))
          {echo "<option value='".$registro[0]."'>".$registro[0]." - ".$registro[1]."</option>";
           
           }
     echo "</select>";
}

/*function pasar_valor()
{ echo "<form name='formulario'>";
  echo "<input type='hidden' name=varphp>";
  echo "</form>";
  echo "<script language=JavaScript> document.formulario.varphp.value=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;";
 
}*/


  # Variables del archivo, si se hizo un POST, cargo el docto
  # id_rel_docto .- Es el ID del tipo de documento a utilizar falta generalizarla
  if ($envio) {
    $type = $_FILES["image_docto"]["type"];
    $tmp_name = $_FILES["image_docto"]["tmp_name"];
    $size = $_FILES["image_docto"]["size"];
    $name = basename($_FILES["image_docto"]["name"]);
    # Contenido del archivo
    $fp = fopen($tmp_name, "rb");
    $buffer = fread($fp, filesize($tmp_name));
    fclose($fp);
    # Descripcion del Archivo
    $desc_docto = $_POST["desc_docto"];
                        pg_query($database->_resource, "begin");
                        # Crea un objeto blob y retorna el oid
                        $oid=pg_lo_create($database->_resource);
                        $sql = "INSERT INTO rel_cedulas_doctos (desc_docto, file_name,  mime, image_bytes, id_rel_docto, image_docto)
                        VALUES ('$desc_docto', '$name', '$type', $size, 1, '$oid')"
;
                        pg_query($database->_resource, $sql) or die(pg_last_error($database->_resource));
                        # Abre el objeto blob
                        $blob=pg_lo_open($database->_resource,$oid,"w");
                        # Escribe el contenido del archivo
                        pg_lo_write($blob,$buffer);
                        # Cierra el objeto
                        pg_lo_close($blob);
                        # Compromete la transacción
                        pg_query($database->_resource, "commit");

    $error_query1="DELETE FROM rel_cedulas_doctos"
    ."\n WHERE image_docto='$oid' "
    ;
    $time_insert=time();
      //Guardando los datos del usuario
      $query= "INSERT INTO rel_cedulas_doctos_info (id_doto, id_user_alta, time_alta)"
      ."\n VALUES ( (SELECT id_docto FROM rel_cedulas_doctos WHERE  id_rel_docto ='1' and file_name='$name'),"
      ."\n '".$_SESSION['session_user_id']."',  '".$time_insert."')"
      ;
      $database->setQuery( $query );
      $error_query2="DELETE FROM rel_cedulas_doctos_info"
      ."\n WHERE id_user_alta= '".$_SESSION['session_user_id']."' and time_alta='$time_insert'"
      ;

    if ($database->getErrorMsg()) {
      echo $error_query2;
      echo "<br>";
      echo $error_query1;
  //    $database->setQuery( $error_query2);
      echo "<br>";
   //   echo $database->getErrorMsg();
      $database->setQuery( $error_query1);
      echo "<br>";
      echo $database->getErrorMsg();
    //  echo "<script>alert('Hubo un erro al guardar el archivo \\n Vuelve a intentar porfavor ');</script>\n";
    exit(0);
    }
  }

  #Obteniendo el listado de los doctos
  $query= "SELECT id_docto, file_name, desc_docto, coalesce(image_docto, -1) as archivo_oid"
  ."\n FROM rel_cedulas_doctos WHERE id_rel_docto='2'
  "
;
  $database->setQuery( $query );
  $cedulas_doctos=$database->loadObjectList();
  $lista= "";
  foreach ($cedulas_doctos as $value) {
    $lista .= "<tr>\n";
    $lista .= "<td>$value->file_name</td>\n";
    $lista .= "<td>$value->desc_docto</td>\n";
    $lista .= "<td><a href=\"download.php?id_docto=$value->id_docto\" title=\"Mostrara el contenido del documento\">Ver</a>|
                  <a href=\"download.php?id_docto=$value->id_docto&amp;f=1\" title=\"Descarga el archivo\">Descargar</a></td>\n"
;
    $lista .= "</tr>\n";
 }
//Termina docto en php ?>
<!-- Funcion para validar mediante Ajax-->
<script languaje="javascript" type="text/javascript">

function validar()
{  
 //var valor=document.rel_cedulas_doctos.select_0.length;
//document.rel_cedulas_doctos.select_0.options[0].text;
//var valor_combo=document.rel_cedulas_doctos.select_0.options[0].value;

var valor_combo=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
var document.rel_cedulas_doctos.id_docto.value=valor;
var document.rel_cedulas_doctos.id_docto.value=valor;
alert(id_docto);
      if (valor_combo==0)  { alert(" Debe elegir una opcion de la lista .");  }
      else   { a=1;}
     
      var valor_caja_1=document.rel_cedulas_doctos.caja_1.value.toUpperCase();
      if (valor_caja_1!="")  { a=1;}
      else   { alert(" Por favor escriba una descripcion valida .");  }
     
      var valor_caja_2=document.rel_cedulas_doctos.caja_2.value;
      if (valor_caja_2!="")  { a=1;}
      else   { alert(" Elija una ruta para la imagen .");  }
     

}

</script>
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
  1. <!-- Inicia documento html--> 
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  3. <html xmlns="http://www.w3.org/1999/xhtml"> 
  4. <head> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
  6. <title>Inform&aacute;tica de la SSDF</title> 
  7. <link rel="stylesheet" type="text/css" media="screen" href="psmymg.css" /> 
  8. </head> 
  9.  
  10. <body> 
  11. <form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="rel_cedulas_doctos" id="rel_cedulas_doctos" onSubmit="validar(this.form)""> 
  12. <div class="pagina" id="contenedor"> 
  13. <div class="pagina_" id="encabezado">Alta de Documentos para la Relaci&oacute;n de Rangos de C&eacute;dulas </div> 
  14.  
  15. <div class="pagina_top" id="el_select"> <center><? genera_doctos()?></center><br> 
  16. <input type="hidden" name="id_docto" id="id_docto" > 
  17. <div class="pagina_cuerpo" id="cuerpo"> 
  18.  
  19.  
  20. <fieldset> 
  21. <label for="desc_docto" >D<span class="key">e</span>scripci&oacute;n</label>
     
  22. <input name="desc_docto" id="caja_1" type="text" class="campos" id="desc_docto" accesskey="e" tabindex="1" title="Nombre corto del documento" size="50" maxlength="45"/> 

  23.  
  24. <label for="image_docto">A<span class="key">r</span>chivo</label>
     
  25. <input name="image_docto" id="caja_2" type="file" class="campos" id="image_docto" accesskey="r" tabindex="2" title="Ruta del documento a guardar" size="45" /> 


  26.  
  27. <input type="button" name="enviar" id="enviar" value="Guardar" tabindex="3" onClick="validar()"/> 
  28. </fieldset> 
  29. </form> 
  30.  
  31. </div> 
  32. <div id="files"> 
  33. <table> 
  34. <tr> 
  35. <th>Nombre</th> 
  36. <th>Descripci&oacute;n</th> 
  37. <th>Mostrar</th> 
  38. </tr> 
  39. <?=$lista?> 
  40. </table> 
  41. </div> 
  42. <div class="pagina_" id="pie">&copy; 2006 Secretar&iacute;a de Salud del Distrito Federal
    Software Libre Distribuido bajo licencia GNU/GPL </div> 
  43. </div> 
  44. <script> 
  45.  
  46. //document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value; 
  47.  
  48.  
  49. //document.rel_cedulas_doctos.select_0.elements[1].value.selected(); 
  50. //document.rel_cedulas_doctos.select_0.element[0].select(); 
  51. document.rel_cedulas_doctos.select_0.focus(); 
  52. document.rel_cedulas_doctos.select_0.option[0].focus(); 
  53. //document.rel_cedulas_doctos.select_0.options[0].text; 
  54. //document.rel_cedulas_doctos.select_0.; 
  55. //document.rel_cedulas_doctos.select_0.selected(); 
  56.  
  57. </script> 
  58. </body> 
  59. </html> 


Al final intento que el FOCO se quede dentro del select, pero esto provoca que siempre
tenga el mismo valor...

Gracias
rookie
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2006-03-01 18:48 @825

Yo utilizo esto

Notapor mdhg3 » 2007-07-25 06:10 @298

Sintáxis: [ Descargar ] [ Ocultar ]
  1. <select name="vivienda"> 
  2. <option value="valorpordefecto" selected>Elija una Opción</option> 
  3. <option value="Piso">Piso</option> 
  4. <option value="Apartamento">Apartamento</option> 
  5. <option value="Atico">Atico</option> 
  6. </select> 


Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
function validar() {
        if (document.formulario.vivienda.value == "valorpordefecto" ) {
                document.formulario.vivienda.focus()
                alert("Elija una opción");
                return false;
        };
}
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
mdhg3
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2007-07-25 06:03 @294


Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados