Foros del Web » Programando para Internet » Javascript »

Numeros Unicos

Estas en el tema de Numeros Unicos en el foro de Javascript en Foros del Web. Wenass,,, Estoy tratando de que el usuario coloque numeros unicos... Tengo 4 select en los cuales tengo por cada select del 1 al 4 necesito ...
  #1 (permalink)  
Antiguo 12/03/2012, 13:54
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Numeros Unicos

Wenass,,,

Estoy tratando de que el usuario coloque numeros unicos...

Tengo 4 select en los cuales tengo por cada select del 1 al 4

necesito que cada select sea único por ejemplo:

Si coloco en el select primero el numero 1
En el segundo select ya no podré elegir esa opción

Sin eliminar la opción de que forma creen que podria comparar los numeros?

Si los comparo a "mano" if = if habra muchas posibildades y se hara grande el código ya que son 4 select.

Que me recomiendan
  #2 (permalink)  
Antiguo 12/03/2012, 15:04
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Numeros Unicos

prueba con este
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
<script type="text/javascript">
function getElement(elElemento) {
return document.getElementById(elElemento);
}



function funcion(select) {
var nextSelect = '', posOpcion = 1;
for(var i = 0; combo = select.form.elements[select.name][i]; i++){
if(combo.id == select.id) nextSelect = select.form.elements[select.name][i+1].id; // Siguiente select
}

for(var i = 1; select.options[i]; i++){

if (select.selectedIndex == 0) { // Si valor por defecto
while(getElement(nextSelect).length > 1) getElement(nextSelect).removeChild(getElement(next Select).options[i]);
break;
}


if (i == select.selectedIndex)
continue;

nuevasOpciones = new Option(select.options[i].value, select.options[i].text);
eval(getElement(nextSelect).options[posOpcion++] = nuevasOpciones);
}
}
</script>
</head>
<body>
Arreglo a la opción que se selecciones en el primer combo, no aparecerá en el segundo, etc...<br>
<form id="form1" name="form1" method="post" action="">
<select id="idioma1" name="idioma[]" size="10" onchange="funcion(this)">
<option value="">Idiomas</option>
<option value="Espa&ntilde;ol">Espa&ntilde;ol</option>
<option value="Ingl&eacute;s">Ingl&eacute;s</option>
<option value="Franc&eacute;s">Franc&eacute;s</option>
<option value="Portugu&eacute;s">Portugu&eacute;s</option>
</select>

<select id="idioma2" name="idioma[]" size="10" onchange="funcion(this)">
<option value="">Idiomas</option>
</select>

<select id="idioma3" name="idioma[]" size="10">
<option value="">Idiomas</option>
</select>
</form>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 12/03/2012, 15:05
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Numeros Unicos

Gracias por responder IsaBelM, ahora me estoy llendo pero mañana lo pruebo y te comento como me fue.
gracias
  #4 (permalink)  
Antiguo 12/03/2012, 23:35
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Numeros Unicos

Podés hacer algo asi

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>Verificar números repetidos</title>
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. /* estilos */
  9. select{
  10. width: 80px;
  11. }
  12. /*]]>*/
  13. <script type="text/javascript">
  14. //<![CDATA[
  15. /* script */
  16. function comparar(){
  17. var u = document.getElementById('uno').value;
  18. var d = document.getElementById('dos').value;
  19. var t = document.getElementById('tres').value;
  20. var c = document.getElementById('cuatro').value;
  21. var cadena = u+d+t+c;
  22. alert(cadena); // para verificar
  23.  
  24.     for(i=1; i <=4; i++){
  25.     var re = new RegExp(i);
  26.     var resultado= re.test(cadena);
  27.     alert(re); // para verificar
  28.     alert(resultado); // para verificar
  29.         if(resultado == false){
  30.         alert('ha omitido o repetido un valor');
  31.         return false;
  32.         }
  33.     }
  34. alert('Todo ok. proceso el form'); // para verificar
  35. }
  36. //]]>
  37. </head>
  38. <div>
  39. <form action="#" method="post" onsubmit="return comparar();">
  40. <div>
  41. <select id="uno" name="uno" multiple="multiple" size="6">
  42. <option value="1">1</option>
  43. <option value="2">2</option>
  44. <option value="3">3</option>
  45. <option value="4">4</option>
  46.  
  47. <select id="dos" name="dos" multiple="multiple" size="6">
  48. <option value="1">1</option>
  49. <option value="2">2</option>
  50. <option value="3">3</option>
  51. <option value="4">4</option>
  52.  
  53. <select id="tres" name="tres" multiple="multiple" size="6">
  54. <option value="1">1</option>
  55. <option value="2">2</option>
  56. <option value="3">3</option>
  57. <option value="4">4</option>
  58.  
  59. <select id="cuatro" name="cuatro" multiple="multiple" size="6">
  60. <option value="1">1</option>
  61. <option value="2">2</option>
  62. <option value="3">3</option>
  63. <option value="4">4</option>
  64.  
  65. <br /><br />
  66. <input type="submit" value="procesar"/>
  67. </div>
  68. </form>
  69. </div>
  70. </body>
  71. </html>

Al hacerlo con números se simplifica.
Algunos alert() están solo para verificar el funcionamiento. La idea es construir una cadena con los valores seleccionados, y contra esta hacer un test con una expresión regular. Por lógica, para que no se repitan los números tu numero tiene que contener los cuatro números, el pattern de la expresión regular se genera dinamicamente en el for usando los valores de i (de 1 a 4), con cualquier false para resultados, la ejecución se detiene.
Lo que me deja dudas es que hacés si no seleccionan nada en uno de los selects, yo la armé para que sea obligatorio. Pero eso depende de como y para que vayas a usar el form.
Probada en IE8+, FF, Chrome, opera, Safari
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 13/03/2012, 07:07
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Numeros Unicos

Muchas gracias a los 2 probe y funcionan los 2 pero voy a tomar el ejemplo de emprear por ahora.

Muchas gracias a los 2

Etiquetas: numeros, unicos
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 14:25.