jquery - 有条件地启用字段

时间:2011-12-16 17:13:19

标签: jquery

我的表单上有两个输入字段 - 如果字段1包含有效数据,我只想允许用户输入field2。我怎样才能使用jQuery实现这一目标。

提前致谢

7 个答案:

答案 0 :(得分:3)

$('#input-one').change(function(){
   if($(this).val() == "valid value")
      $('#input-two').removeAttr('disabled', 'disabled');
   else
      $('#input-two').attr('disabled', 'disabled');  
});

我希望这会有所帮助。

答案 1 :(得分:1)

您希望在field1中拥有哪些数据,即采用何种格式?根据您需要编写验证函数,您应该调用field1的onblur。此验证函数应检查field1中的数据,并相应地启用/禁用field2。

即。类似的东西:

$('#field1').blur(function() {

  var data = $('#field1').val();

  var valid = false;
  // ... do you validation here ...

  $('#field2').attr('disabled', !valid);

});

答案 2 :(得分:1)

//cache the second field to make the event handler perform faster
var field2 = document.getElementById('field2');
$('#one').on('change', function () {

    //check to make sure the value is "valid"
    if (this.value == '') {

        //if not valid then disable the input
        field2.disabled = true;
    } else {

        //if valid then enable the input
        field2.disabled = false;
    }
});

以下是演示:http://jsfiddle.net/gL8Jq/

请注意,.on()是jQuery 1.7中的新功能,在这种情况下与.bind()相同:http://api.jquery.com/on

答案 3 :(得分:0)

这个基本结构可能对您有用:

$('#field1').change(function() {
  if (isValidData($(this).val()) {
    $('#field2').removeAttr('disabled');
  } else {
    $('#field2').attr('disabled', 'disabled');
  }
}).change();

我不认为整个disable业务非常干净。有谁知道更清洁的解决方案?

答案 4 :(得分:0)

绑定到字段1的change事件并执行验证。然后,根据验证结果设置字段2的“已禁用”属性。

答案 5 :(得分:0)

$('id_field_2').change(function(){
    if ( !is_field_valid($('id_field1').val()) ) { 
        $('id_field_2').val('');
    } 
});

你可以使用“更改”或其他键盘事件行keydown,按键。

答案 6 :(得分:0)

是。

例如,如果您只想在第一个文本框不为空时启用第二个文本框。

$('#text1').blur(function(){
  if( $(this).val() == '' ) { // for example empty textbox not allowed
    $('#text2').val('').attr('disabled','disabled');
  } else {
    $('#text2').removeAttr('disabled');
  }
});

Demo