Foros del Web » Programando para Internet » Javascript »

Verificar Valor introducido con Datalist

Estas en el tema de Verificar Valor introducido con Datalist en el foro de Javascript en Foros del Web. Buenas Foreros. Tengo una duda básica de funcionamiento. No suelo usar demasiado los datalist pero para este caso es Olbligatorio así que lo he usado, ...
  #1 (permalink)  
Antiguo 29/04/2015, 11:38
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Verificar Valor introducido con Datalist

Buenas Foreros.

Tengo una duda básica de funcionamiento.

No suelo usar demasiado los datalist pero para este caso es Olbligatorio así que lo he usado, y bien ahora tengo un problema con la validación de un texto introducido por el usuario.

El texto o país, debe coincidir con algún País Europeo del datalist que tengo actualmente, debo realizar una comprobación por JScript, pero no doy con ello con cómo comparar el valor con el valor del Datalist y que sean Europeos.

Dejo mi Código del Datalist del formulario.

Código HTML:
Ver original
  1. <form method="post" action="datos.js" name="form1">
  2.                        
  3.             <table width="100%" align="center">
  4.                 <tr>
  5.                     <td> <label>Pa&iacute;s:</label>  </td>
  6.                     <td> <input name="pais" list="paises"/>
  7.                         <datalist id="paises">
  8.                             <option value="Alemania">
  9.                             <option value="Argentina" />
  10.                             <option value="Brasil" />
  11.                             <option value="Belgica" />
  12.                             <option value="Dinamarca" />
  13.                             <option value="Colombia" />
  14.                             <option value="Espa&ntilde;a" />
  15.                             <option value="Francia">
  16.                             <option value="Holanda">
  17.                             <option value="M&eacute;xico" />
  18.                             <option value="Per&uacute;" />
  19.                             <option value="Portugal">
  20.                             <option value="Otro país" />
  21.                         </datalist>
  22.                     </td>
  23.                 </tr>
  24.  
  25. <input type="submit" name="enviar" value="Enviar Datos" />

Bien lo he probado realizando un IF de este tipo pero no me surge efectos.


Código Javascript:
Ver original
  1. if(form1.pais.value=="") {
  2. alert('Error: [ " Selecciona un pais europeo " ]');
  3. form1.pais.focus();
  4. return(false);
  5. }

Seguiré buscando más por Internet espero un poco de ayuda o guías.

Tocó pocos codes de JScript, me resulta más fácil PHP jeje.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #2 (permalink)  
Antiguo 29/04/2015, 11:50
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Verificar Valor introducido con Datalist

La vieja alternativa es usar un select, así nunca se puede equivocar

La otra forma es usar JS:

http://stackoverflow.com/questions/2...html5-datalist
  #3 (permalink)  
Antiguo 29/04/2015, 12:29
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Respuesta: Verificar Valor introducido con Datalist

Buenas PHPeros.

Gracias por responder tan pronto,, he intentado usar el código que me suministras en la web pero no me funciona o no se hacerlo funcionar, he seguido buscando otros códigos.

Encontré este pero tampoco válida correctamente en JScript.

(COPIAR EN UN NUEVO DOC HTML PARA PROBAR)

Código Javascript:
Ver original
  1. <form action='' method='POST' id='datos' name='datos'>
  2. <div id='input_dato'>
  3. <label for='dato'>Dato Requerido:</label>
  4. <input type='text' name='dato' id='dato' list='nombres' required oninput='verificar(this)'>
  5. <input type='submit' name='boton' id='boton'>
  6. <datalist id='nombres'>
  7.  
  8. <option value='LIGHT' class='nombre'/>
  9. <option value='VEGETA' class='nombre'/>
  10. <option value='IKKI' class='nombre'/>
  11. <option value='EDEN' class='nombre'/>
  12.  
  13. </datalist>
  14. </div>
  15. </form>
  16. <script>
  17.     //Esta función se encargará de realizar la validación de los datos
  18.     function verificar(input){
  19. //Primero guardamos en una variable temporal el valor del input que se desea validar
  20.      var valor=input.value;
  21. //Luego se verifica si el usuario intenta enviar el campo vacío
  22.      if(valor.length==0){
  23. //Si el campo está vacío modificamos el mensaje que deseamos que muestre el navegador
  24. //Este paso es opcional
  25.      input.setCustomValidity('Debe ingresar un nombre');
  26.      }else{
  27. //Si el campo no está vacío, procedemos a validar la información
  28. //Guardamos el valor de todos los datos presentes en el datalist en un arreglo temporal
  29. var cis=document.querySelectorAll('#input_datos .nombre');
  30. //Leemos cuantos elementos incluye el arreglo cis
  31.      var n=cis.length;
  32. //Esta es una variable temporal que se usará en el análisis del arreglo cis
  33.      var valorT;
  34. //Es una variable bandera que indicará si el datos suministrado está en la lista
  35.      var bandera=0;
  36. //Recorremos cis
  37.      for(var i=0;i<n;i++){
  38. //Guardamos el iésimo valor de cis en la variable temporal valorT
  39.      valorT=cis[i].value;
  40.      //Comparamos el valor suministrado con valorT
  41.      if(valor==valorT){
  42. //Si son iguales el valor de la bandera cambia a uno
  43.      bandera=1;
  44. //Interrumpimos el ciclo
  45. break;
  46.      }      
  47.  
  48.      }
  49. //Si la bandera es igual a uno el dato es válido y se podrá usar para cualquier función específica
  50.      if(bandera==1){
  51. //Con esta línea eliminamos la validación de este input
  52.      input.setCustomValidity('');
  53.      }else{
  54. //Si no se encontró el valor podemos "lanzar" un mensaje indicando el error
  55.      input.setCustomValidity(valor+' no existe en la lista sugerida');
  56.      }      
  57.  
  58.      }
  59.      
  60.     }
  61.     </script>

Cómo puedo hacer funcionar uno de los dos códigos, esto de los datalist jeje, lo tenía un poco perdido la verdad.


Gracias saludos
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #4 (permalink)  
Antiguo 29/04/2015, 13:22
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Verificar Valor introducido con Datalist

Seguro que fallaba porque usas HTML entities, y JavaScript las interpreta tal cual. De todas formas pongo como sería:

Código HTML:
Ver original
  1. País:
  2. <input id="lista" name="pais" list="paises">
  3. <datalist id="paises">
  4.     <option value="Alemania">
  5.     <option value="Argentina">
  6.     <option value="Brasil">
  7.     <option value="Belgica">
  8.     <option value="Dinamarca">
  9.     <option value="Colombia">
  10.     <option value="España">
  11.     <option value="Francia">
  12.     <option value="Holanda">
  13.     <option value="México">
  14.     <option value="Perú">
  15.     <option value="Portugal">
  16.     <option value="Otro país">
  17.  
  18.  
  19. <input type="button" name="enviar" value="Enviar Datos" onclick="comprobar()">

Código Javascript:
Ver original
  1. var text = document.getElementById("lista"),
  2.     element = document.getElementById("paises");
  3.  
  4. function comprobar(){
  5.     if(element.querySelector("option[value='"+text.value+"']"))
  6.         alert("Bien");
  7.     else
  8.         alert("Mal");
  9. }

DEMO
  #5 (permalink)  
Antiguo 29/04/2015, 14:55
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Respuesta: Verificar Valor introducido con Datalist

Buenas.

Lo he probado y no me ha funcionado, es un poco raro pero adjunto el código completo para ver si hay algún error.

Código HTML:
Ver original
  1.  
  2. <head>
  3.         <title> Config.Html </title>
  4.        
  5.         <link rel="styleSheet" href="css/iroom.css" type="style/css" />
  6.        
  7.         <script>
  8.        
  9.         var text = document.getElementById("pais"),
  10.         element = document.getElementById("paises");
  11.            
  12.         function comprobar(){
  13.             if(element.querySelector("option[value='"+text.value+"']"))
  14.                 alert("Bien");
  15.             else
  16.                 alert("Mal");
  17.         }
  18.              
  19.         </script>
  20. </head>
  21.  
  22.  
  23.     <!--  div contenedor -->
  24.     <div id="contenedor3">
  25.        
  26.         <h1 id="titulo"> Smart Room Project </h1>
  27.        
  28.         <div id="menu">
  29.             <ul>
  30.                 <li> <a href="minombre2.html">Nombre </a> </li>
  31.                 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  32.                 <li> <a href="config2.html">Configuraci&oacute;n </a></li>             
  33.             </ul>
  34.         </div>
  35.            
  36.        
  37.         <table width="100%" align="center">
  38.             <tr>
  39.                 <td>
  40.                     <h2 id="habitacion"> Datos de la Habitaci&oacute;n  </h2>
  41.                     <br/>
  42.                    
  43.                     <div id="datos_center">
  44.                         <form method="post" action="datos.js" name="form1">
  45.                        
  46.                         <table width="100%" align="center">
  47.                             <tr>
  48.                                 <td> <label>Pa&iacute;s:</label>  </td>
  49.                                 <td> <input id="pais" name="pais" list="paises" />
  50.                                     <datalist id="paises">
  51.                                         <option value="Alemania">
  52.                                         <option value="Argentina" />
  53.                                         <option value="Brasil" />
  54.                                         <option value="Belgica" />
  55.                                         <option value="Dinamarca" />
  56.                                         <option value="Colombia" />
  57.                                         <option value="Espa&ntilde;a" />
  58.                                         <option value="Francia">
  59.                                         <option value="Holanda">
  60.                                         <option value="M&eacute;xico" />
  61.                                         <option value="Per&uacute;" />
  62.                                         <option value="Portugal">
  63.                                         <option value="Otro país" />
  64.                                     </datalist>
  65.                                 </td>
  66.                             </tr>
  67.                             <tr>
  68.                                 <td>
  69.                                     Ciudad:
  70.                                 </td>
  71.                                 <td>
  72.                                     <input type="text" name="ciudad" value="" />
  73.                                 </td>
  74.                             </tr>
  75.                             <tr>
  76.                                 <td>
  77.                                     Coordenadas GPS:
  78.                                 </td>
  79.                                 <td>
  80.                                     <input type="text" name="gps" value="" />
  81.                                 </td>
  82.                             </tr>
  83.                             <tr>
  84.                                 <td>
  85.                                     Mapa URL:
  86.                                 </td>
  87.                                 <td>
  88.                                     <input type="text" name="url" value="" />
  89.                                 </td>
  90.                             </tr>
  91.                             <tr>
  92.                                 <td>
  93.                                     Foto:
  94.                                 </td>
  95.                                 <td>
  96.                                     <input type="file" name="foto" value="" />
  97.                                 </td>
  98.                             </tr>
  99.                             <tr>
  100.                                 <td>
  101.                                     Password:
  102.                                 </td>
  103.                                 <td>
  104.                                     <input type="password" name="pass" value="" />
  105.                                 </td>
  106.                             </tr>
  107.                             <tr>
  108.                                 <td>
  109.                                     Foto:
  110.                                 </td>
  111.                                 <td>
  112.                                     <input type="file" name="foto" value="" />
  113.                                 </td>
  114.                             </tr>
  115.                         </table>
  116.                            
  117.                 </td>
  118.                 <td>
  119.                         <h2 id="title_sensor">Seleccione los sensores </h2>
  120.                        
  121.                              <input type="checkbox" name="temperatura" value="" /> Temperatura
  122.                         <br/>
  123.                              <input type="checkbox" name="humedad" value="" />Humedad
  124.                         <br/>
  125.                             <input type="checkbox" name="ruido" value="" /> Nivel de Ruido
  126.                         <br/>
  127.                             <input type="checkbox" name="luz" value="" /> Nivel de luz
  128.                         <br/>
  129.                              <input type="checkbox" name="mov" value="" /> Movimiento
  130.                         <br/>
  131.                             <input type="checkbox" name="color" value="" /> Color iluminaci&oacute;n
  132.                         <br/>
  133.                         <h2 id="title_sensor">Configure alertas </h2>
  134.                             Temperaturas M&aacute;ximas: <br/>
  135.                                 <select name="maximas" style=" width:130px;">
  136.                                       <option value="45">45</option>
  137.                                       <option value="40">40</option>
  138.                                       <option value="35">35</option>
  139.                                       <option value="30">30</option>
  140.                                       <option value="25">25</option>
  141.                                       <option value="20">20</option>
  142.                                       <option value="15">15</option>
  143.                                       <option value="11">11</option>
  144.                                      
  145.                                 </select>
  146.                             <br/>
  147.                             Temperaturas M&iacute;nimas: <br/>
  148.                                 <select name="maximas" style=" width:130px;">
  149.                                       <option value="-2">-2</option>
  150.                                       <option value="-1">-1</option>
  151.                                       <option value="0">0</option>
  152.                                       <option value="1">1</option>
  153.                                       <option value="2">2</option>
  154.                                       <option value="3">3</option>
  155.                                       <option value="4">4</option>
  156.                                       <option value="5">5</option>
  157.                                       <option value="6">6</option>
  158.                                       <option value="7">7</option>
  159.                                       <option value="8">8</option>
  160.                                       <option value="9">9</option>
  161.                                       <option value="10">10</option>
  162.                                 </select>
  163.                                
  164.                         </div>  <!--end div de formulario -->
  165.                             <br/><br/><br/>
  166.                 </td>
  167.             </tr>
  168.                
  169.             <tr>
  170.                 <td align="center" colspan="2">
  171.                     <input type="button" name="enviar" value="Enviar Datos"  onclick="comprobar()" />
  172.                    
  173.                     </form>
  174.                     <br/><br/>
  175.                     <a href="index2.html">Volver a p&aacute;gina Principal.</a>
  176.                 </td>
  177.             </tr>
  178.         </table>
  179.        
  180.     </div>
  181.     <!-- end div contenedor -->
  182.  
  183.         <div id="pie">
  184.             Universidad de Alcalá.
  185.         </div>
  186.    
  187. </body>
  188.  
  189. </html>

Muchas Gracias por tu ayuda.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #6 (permalink)  
Antiguo 30/04/2015, 00:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Verificar Valor introducido con Datalist

No funciona porque no estás tomando a los elementos ya que aún no existen en el momento en el que se ejecutan esas dos primeras líneas de código JavaScript (no JScript que es otra cosa). Ejecuta dicho código cuando se haya cargado el DOM o la ventana completa, para lo cual puedes usar eventos como DOMContentLoaded o load o simplemente colocando dicho código después de todos los elementos del documento y antes de la etiqueta </body>.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 01/05/2015, 14:11
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Respuesta: Verificar Valor introducido con Datalist

Es verdad, de nuevo mil gracias Alexis88, siempre que has podido me ayudas con muchas dudas básicas y avanzadas.

Y claro, por lo que veo en JavaScript, es bastante importante la colocación del código antes o después de los elementos, ya me ha sucedido varias veces, espero tenerlo la próxima vez en cuenta.

Y una duda que me surgió que bueno leeré ahora mismo la diferencia entre JavaScript y JScript, pensaba que era lo mismo jeje, lo siento mi ignorancia en ello, ahora mismo buscaré la info, y me aclararé las dudas.

Mil gracias a toda la comunidad Forosdelweb.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1

Etiquetas: datalist, formulario, funcion, input, js, php, valor, verificar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.