0

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次の入力ボックスは正常に無効になりますが、最初のテキスト ボックスをクリアしても属性は削除されません。

4

2 に答える 2

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/

于 2012-05-27T18:33:11.153 に答える
1

keyupたとえば、私はイベントを使用しますが、どちらblurかまたはkeyup 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);
});

デモ

于 2012-05-27T18:39:23.753 に答える