输入时的实时变化

时间:2012-05-27 18:31:12

标签: jquery

如果第一个输入框不为空,我正在尝试使用jQuery禁用下一个输入框:

<input name = "mrp" id="mrp" type = "text" />
<input name = "miw" class="mmw" type = "text" />
<input name = "maw" class="mmw" type = "text" />

JavaScript代码:

$(document).ready(function() {
        $('#mrp').blur(function() {     //i have even tried with live('change')
               var mrp = $(this).val();
               if(mrp != '' || mrp != ' '){
                 $('.mmw').attr("disabled", "disabled");   
               }
               else if(mrp == '' || mrp == ' '){
                   $('.mmw').removeAttr("disabled");
               }
               else{
                  $('.mmw').removeAttr("disabled");
               }
        });
});

它可以很好地禁用下一个输入框,但是当我清除第一个文本框时,它不会删除disabled属性。

2 个答案:

答案 0 :(得分:3)

您必须检测何时填充第一个输入。

可以使用

完成
$(window).ready(function() {  
    var handler = function() {
    if ($('#mrp').val().trim()!='') $('.mmw').attr("disabled", "disabled");
    else $('.mmw').removeAttr('disabled');
    };
    $('#mrp').keyup(handler).change(handler);
});​

“失去焦点”检测通常很糟糕,因为您不希望在其他地方点击以查看其他输入更改。这就是我建议使用`keyup'的原因。

编辑:这是一个小提琴:http://jsfiddle.net/jxgTe/

答案 1 :(得分:1)

我使用keyup事件,例如,您可以使用blurkeyup blur

$('input[name=mrp]').keyup(function() {
    if ($.trim(this.value).length) {
        $(this).nextAll('input.mmw').prop('disabled', true);
    } else $(this).nextAll('input.mmw').prop('disabled', false);
});

<强> DEMO