Validar que no se repitan datos en select multiple

Tengo otra pregunta acerca del uso del select multiple.
Ya carga los datos de la caja de texto y luego se cargan en el select múltiple. (¿Gracias por la inf.) Cómo puedo validar que no se repitan los valores que están en el select?
Se debe comparar lo que esta en la caja de texto contra los valores del select. ¿Creo un arreglo con estos valores?

1 respuesta

Respuesta
1
Me alegro que la respuesta anterior haya servido, ahora intentaré contestarte a esta otra, usando mi mismo ejemplo anterior.
Todo va a seguir igual, menos la función Javascript que será la que me modifiquemos:
function agregaItem()
{
refFormu = document.forms[0];
var existe = false;
// Primero verificamos que el item no existe
for(i=0; i< refFormu.elements["selMenu"].options.length; i++)
if(refFormu.elements["selMenu"].options == refFormu.txtValor.value)
existe = true;
// Si no existe agregamos dicho item
if(!existe)
refFormu.elements["selMenu"].options[refFormu.elements["selMenu"].options.length] = new Option(refFormu.txtValor.value,refFormu.txtValor.value);
else
alert("Elemento ya existente.");
}
Como ves, hemos agregado un bucle, que recorre todas los valores que tiene dicho select múltiple, si no tiene valores, directamente no dará ninguna vuelta el bucle, si tiene un valor, dará una vuelta el bucle, así sucesivamente, y por cada vuelta comprará actual valor del select múltiple con el valor que haya en la caja de texto. Tenemos una variable de tipo lógica inicializada a false, que será true, cuando encontremos un item que sea igual la pondremos a true, para distinguir que se ha encontrado un elemento concordante.
Posteriormente, evaluamos dicha variable, y en caso de que sea "false", quiere decir que el item no se ha encontrado en el select múltiple, y que por tanto, queremos agregarla. En caso contrario, mostramos un mensaje de alerta al usuario de que ya existe el elemento.
No olvides puntuar mis respuestas :)
Nuevamente muchas gracias por la ayuda! Y mientras me adapto al desarrollo web, seguiré preguntando, espero que todos los expertos en este sitio expliquen tan bien como usted.
Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas