Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Validar opción elegida en un Select o combo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript
Mensaje Vie May 12, 2006 11:52 am
rookie
Perlero Nuevo
Perlero Nuevo
Registrado: 01 Mar 2006
Mensajes: 39
Validar opción elegida en un Select o combo Responder citando

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.
Mensaje Vie May 12, 2006 3:26 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola:

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

Saludos
Mensaje Vie May 12, 2006 3:56 pm
rookie
Perlero Nuevo
Perlero Nuevo
Registrado: 01 Mar 2006
Mensajes: 39
Responder citando

Para evitar confusiones... he puesto todo mi código .... ojalá no esté muy enredado...
Aquí está:
Javascript:
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>


HTML:
<!-- Inicia documento html-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Inform&aacute;tica de la SSDF</title>
<link rel="stylesheet" type="text/css" media="screen" href="psmymg.css" />
</head>

<body>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="rel_cedulas_doctos" id="rel_cedulas_doctos" onSubmit="validar(this.form)"">
<div class="pagina" id="contenedor">
  <div class="pagina_" id="encabezado">Alta de Documentos para la Relaci&oacute;n de Rangos de C&eacute;dulas </div>
 
  <div class="pagina_top" id="el_select"> <center><? genera_doctos()?></center><br>
  <input type="hidden" name="id_docto" id="id_docto" >
  <div class="pagina_cuerpo" id="cuerpo">
   
   
        <fieldset>
          <label for="desc_docto" >D<span class="key">e</span>scripci&oacute;n</label><br />
                <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"/>
                <br />
          <label for="image_docto">A<span class="key">r</span>chivo</label><br />
                <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" />
                <br /><br />
                <input type="button" name="enviar" id="enviar" value="Guardar"  tabindex="3" onClick="validar()"/>
        </fieldset>
    </form>

        </div>
        <div id="files">
                <table>
                <tr>
                        <th>Nombre</th>
                        <th>Descripci&oacute;n</th>
                        <th>Mostrar</th>
                </tr>
                        <?=$lista?>
                </table>
        </div>
  <div class="pagina_" id="pie">&copy; 2006 Secretar&iacute;a de Salud del Distrito Federal<br /> Software Libre Distribuido bajo licencia GNU/GPL </div>
</div>
<script>

//document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;


//document.rel_cedulas_doctos.select_0.elements[1].value.selected();
//document.rel_cedulas_doctos.select_0.element[0].select();
document.rel_cedulas_doctos.select_0.focus();
document.rel_cedulas_doctos.select_0.option[0].focus();
//document.rel_cedulas_doctos.select_0.options[0].text;
//document.rel_cedulas_doctos.select_0.;
//document.rel_cedulas_doctos.select_0.selected();

</script>
</body>
</html>


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

Gracias
Mensaje Mie Jul 25, 2007 5:10 am
mdhg3
Perlero Nuevo
Perlero Nuevo
Registrado: 25 Jul 2007
Mensajes: 1
Yo utilizo esto Responder citando

HTML:
<select name="vivienda">
        <option value="valorpordefecto" selected>Elija una Opción</option>
        <option value="Piso">Piso</option>
        <option value="Apartamento">Apartamento</option>
        <option value="Atico">Atico</option>
</select>


Javascript:
function validar() {
        if (document.formulario.vivienda.value == "valorpordefecto" ) {
                document.formulario.vivienda.focus()
                alert("Elija una opción");
                return false;
        };
}
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group