Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] raro comportamiento en comparación de inputs javascript

Estas en el tema de raro comportamiento en comparación de inputs javascript en el foro de Javascript en Foros del Web. Hola, Tengo un formulario en el cuál existen 3 select-option que extraen su valor de la misma tabla, es decir; los select respectivamente se llaman ...
  #1 (permalink)  
Antiguo 16/10/2018, 11:53
 
Fecha de Ingreso: noviembre-2015
Mensajes: 52
Antigüedad: 3 años, 1 mes
Puntos: 2
Pregunta raro comportamiento en comparación de inputs javascript

Hola,

Tengo un formulario en el cuál existen 3 select-option que extraen su valor de la misma tabla, es decir; los select respectivamente se llaman laboratorio_1, laboratorio_2, laboratorio_3; estos reciben su valor de una tabla llamada laboratorio. Necesito comparar y condicionar a que cuando el usuario introduzca los valores del laboratorio, no sean iguales ninguno de los tres, mi problema es que cuando los laboratorios están en blanco, lo toma como valores iguales y simplemente no deja grabar aunque lo esté condicionando a que si están en blanco se pueda grabar.
Mi código de la condición es el siguiente:
Esto corresponde al formulario:
Código PHP:
echo"<label style='margin-left:40px;'>Laboratorio 1</label><select name='lab_1' id='lab_1' style='width: 120px; margin-left:30px;' >";
           echo
" <option value='".$registro['27']."'>".$registro['27']."</option>";
            
$sql_lab=mysqli_query($con"SELECT * FROM catalogo_laboratorios ORDER BY nombrelaboratorio ASC");
        while (
$result=mysqli_fetch_row($sql_lab)) {    
          echo
" <option value='".$result['0']."'>".$result['0']."</option>";
           }   
        echo
"</select>";
        
    echo
"<label style='margin-left:30px;'>Laboratorio 2</label><select name='lab_2' id='lab_2' style='width: 120px; margin-left:30px;' onclick='return validarLab1()' >";
            echo
"<option value='".$registro['28']."'>".$registro['28']."</option>";
        
        
$sql_lab=mysqli_query($con"SELECT * FROM catalogo_laboratorios ORDER BY nombrelaboratorio ASC");
        while (
$result=mysqli_fetch_row($sql_lab)) {    
          echo
" <option value='".$result['0']."'>".$result['0']."</option>";
           }   
        echo
"</select>";

    echo
"<label style='margin-left:30px;'>Laboratorio 3</label><select name='lab_3' id='lab_3' style='width: 120px; margin-left:30px;' onclick='return validarLab2()' > ";      
            echo
"<option value='".$registro['29']."'>".$registro['29']."</option>";
        
           
$sql_lab=mysqli_query($con"SELECT * FROM catalogo_laboratorios ORDER BY nombrelaboratorio ASC");
        while (
$result=mysqli_fetch_row($sql_lab)) {    
          echo
" <option value='".$result['0']."'>".$result['0']."</option>";
           }
                
        echo
"</select> 
Ahora, lo condiciono con javascript para lograr que no sean iguales los valores:
Código:
var l1 = document.getElementsByName('lab_1')[0].value;
    var l2 = document.getElementsByName('lab_2')[0].value;
    var l3 = document.getElementsByName('lab_3')[0].value;

    if ((l1 == "") && (l2 == "") && (l3 == "")) {

    }else{
        if (l1==l2) {
            alert('El laboratorio 2 no puede ser igual que el laboratorio 1');
            return false;
        }
    }
    if ((l1 == "") && (l2 == "") && (l3 == "")) {

    }else{
        if (l2==l3) {
            alert('El laboratorio 3 no puede ser igual que el laboratorio 2');
            return false;
        }
    }
    if ((l1 == "") && (l2 == "") && (l3 == "")) {

    }else{
        if (l1==l3) {
            alert('El laboratorio 3 no puede ser igual que el laboratorio 1');
            return false;
        }
    }
Y lo que hace es que si el usuario tiene que grabar los laboratorios en blanco, pues los identifica como iguales y no le permite continuar con el guardado de su registro.

Si alguien me puede ayudar por favor?
__________________
paco alonso
  #2 (permalink)  
Antiguo 16/10/2018, 12:54
 
Fecha de Ingreso: noviembre-2015
Mensajes: 52
Antigüedad: 3 años, 1 mes
Puntos: 2
Respuesta: raro comportamiento en comparación de inputs javascript

Después de leer y re-leer el código, me di cuenta de que es un error en la sintaxis, les dejo el código correcto por si a alguien le sirve.
Código:
if ((l1 == "") && (l2 == "") && (l3 == "")) {} else
    if (l1 == l2) {
        alert('El laboratorio 2 no puede ser igual que el laboratorio 1');
        return false;
    }
    if ((l1 == "") && (l2 == "") && (l3 == "")) {} else
    if (l2 == l3) {
        alert('El laboratorio 3 no puede ser igual que el laboratorio 2');
        return false;
    }
    if ((l1 == "") && (l2 == "") && (l3 == "")) {} else
    if (l1 == l3) {
        alert('El laboratorio 3 no puede ser igual que el laboratorio 1');
        return false;
    }
Saludos
__________________
paco alonso
  #3 (permalink)  
Antiguo 20/10/2018, 00:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.876
Antigüedad: 10 años, 4 meses
Puntos: 2152
Respuesta: raro comportamiento en comparación de inputs javascript

De hecho, no es correcto, no entiendo para qué repetir todas esas condiciones:

Código Javascript:
Ver original
  1. if(l1 == "" && l2 == "" && l3 == "") {
  2.     // Permitir grabar
  3. } else {
  4.     if(l1 != "" && l2 != "" && l1 == l2) {
  5.         // No permitir grabar, porque no están en blanco y son iguales
  6.     }
  7.     // Haz las mismas comparaciones para los otros dos
  8. }
__________________
- León, Guanajuato
- GV-Foto



La zona horaria es GMT -6. Ahora son las 13:45.