Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/10/2018, 10:53
madison_sg
 
Fecha de Ingreso: noviembre-2015
Mensajes: 77
Antigüedad: 8 años, 5 meses
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