2009-09-07 17 views
55

Tengo 2 campos: 1 entrada, 1 casilla de selección.jQuery - Inhabilitar campos de formulario

¿Es posible hacer que el navegador deshabilite uno de los campos cuando el usuario usa el otro?

Por ejemplo, si el usuario está ingresando datos en la entrada, el cuadro de selección está deshabilitado. Si el usuario está seleccionando datos de la selección (menú desplegable), la entrada está deshabilitada.

Cualquier ayuda con esto sería muy apreciada.

Saludos con anticipación.

Respuesta

112
<script type="text/javascript" src="jquery.js"></script>   
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#suburb").blur(function() { 
      if ($(this).val() != '') 
       $("#post_code").attr("disabled", "disabled"); 
      else 
       $("#post_code").removeAttr("disabled"); 
     }); 

     $("#post_code").blur(function() { 
      if ($(this).val() != '') 
       $("#suburb").attr("disabled", "disabled"); 
      else 
       $("#suburb").removeAttr("disabled"); 
     }); 
    }); 
</script> 

También tendrá que añadir un atributo de valor a la primera opción en el elemento de selección:

<option value=""></option> 
+0

Hey bigmattyh, Gracias por su rápida respuesta. Desafortunadamente, el script no funciona para mí. ¿Hay algo que deba hacer para que el script funcione? A continuación es mi código: user159025

+0

Bueno, deberá incluir jQuery y poner este código en un bloque $ (documento) .ready() (actualizado a relfect esto). En cuanto a su HTML, necesitará un valor predeterminado en esa casilla de selección, para que esto funcione de manera confiable. –

+0

Gracias por su esfuerzo. Lamentablemente, no funciona para mí. Saludos. – user159025

7

probar esto

$("#inp").focus(function(){$("#sel").attr('disabled','true');}); 

$("#inp").blur(function(){$("#sel").removeAttr('disabled');}); 

viceversa para la selección también.

+0

Gracias por su esfuerzo. Lamentablemente, no funciona. – user159025

+0

¿puede agregar detalles sobre lo que sucedió? Lo intenté en IE estaba funcionando bien. – Nrj

+0

Hola Nrj. Gracias por responder. Agregué el guión. Pero nada pasa. Agregué $ (documento) .Ready (función() y probé diferentes nombres de identificación, pero no pasó nada. Saludos. – user159025

12
$('input, select').attr('disabled', 'disabled'); 
+1

+1 y añado la siguiente línea para el estilo: $ ('input, textarea'). Attr ('readonly', 'readonly'); – AlterPHP

44

Los documentos jQuery dicen utilizar prop() para cosas como las personas con discapacidad, comprobado, etc. También la forma más concisa es usar su motor de selectores . Así que para deshabilitar todos los elementos de formulario en un div o forma padre.

$myForm.find(':input:not(:disabled)').prop('disabled',true); 

y para permitir de nuevo que podría hacer

$myForm.find(':input:disabled').prop('disabled',false); 
+0

esto es más limpio y fácil de incluir en cualquier construcciones lógicas – dwenaus

Cuestiones relacionadas