0

私はいくつかのテキストボックスを並べました(数は一定ではありません)。jqueryを使用して、最初の関数を除くすべての関数を無効にするために、各関数を使用しました。テキストボックスには a が与えられ、class = "user_inputs"id は徐々に与えられid="text1" , "text2"ます...

$('input.user_inputs').each(function() {$(this.attr('disabled','true'}); $('input#text1').attr('disabled',false);

私が欲しいのは、最初のテキストボックスに値がある場合にのみ2番目のボックスがアクティブになり、2番目にも値がある場合は3番目のボックスがアクティブになるということです。以下のように、キーアップ関数を使用して for ループを試しました。

    var n=1
for(n;n<=total_textboxes;n++){
$('input#text' + n).keyup(function() {
    $('input#text' + n + 1).attr('disabled',false)
});//end keyup
}//end for

これは機能しません。代わりに、ページが読み込まれなくなります。

私を助けてください

4

3 に答える 3

0

実際に使用する必要はありませんfor(n;n<=total_textboxes;n++)...$.each()そして$.next()それも処理できます

例として

HTML:

<input type="text" class="user_inputs" id="text1" />
<input type="text" class="user_inputs" id="text2" />
<input type="text" class="user_inputs" id="text3" />
<input type="text" class="user_inputs" id="text4" />
<input type="text" class="user_inputs" id="text5" />
<input type="text" class="user_inputs" />
<input type="text" class="user_inputs" />
<input type="text" class="user_inputs" />
<input type="text" class="user_inputs" />

jQuery:

$(document).ready(function(){
    // To demonstrate disable all first
    $('input.user_inputs').each(function() { $(this).attr('disabled','true'); });
    // Left only first one enabled
    $('input#text1').attr('disabled',false);
    // For each of your inputs
    $('input[type=text]').each(function() {
        // Search for "#text + (n + 1)" blabla.. named ones
        if ($.trim(this.id).indexOf("text") >= 0) {
            // Bind keyup
            $(this).keyup(function() {
                // Again search for "#text" named ones
                if ($.trim($(this).next().attr('id')).indexOf("text") >= 0) {
                    // Enable
                    $(this).next().attr('disabled', false);
                }
            });
        }
    });
});

jsfiddle: http://jsfiddle.net/BerkerYuceer/nFQjH/

于 2012-11-13T08:16:28.763 に答える
0

これを試して:

var inputs = $(".user_inputs");
for(var i = 1; i < inputs.length + 1; i++){
  var prev = $("#text" + (i - 1));
  if(prev.length){
    $("#text" + i).attr("disabled", prev.val() == '' ? true : false);
  }
}

http://jsfiddle.net/74Kzu/5/

于 2012-11-13T06:01:42.927 に答える
0

属性を削除するには、または無効化属性を削除するには、次を使用する必要があります。

 $('input#text' + n + 1).removeAttr('disabled');
于 2012-11-13T06:41:52.227 に答える