2012-11-13 61 views
0

我列了一些文本框(數字不是常量)。使用jquery我已經使用每個函數來禁用除第一個以外的每一個。文本框都獲得了class = "user_inputs"和IDS逐漸給出id="text1" , "text2"等等...jquery漸進式文本框激活

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

我想要的是 - 如果在第一個文本框的值只有第二個框被激活,如果第二個也有值,第三個被激活,等等。我試過了一個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 

這是行不通的 - 反而阻礙了我的頁面加載。

請幫我

回答

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/

+0

不起作用.. 我認爲這裏的問題是我們沒有將此代碼與任何事件關聯.... ive在#text1 – user1817626

+0

上嘗試使用keyup我很遺憾地將字符串傳遞給disabled屬性而不是布爾值,編輯回答,伴隨小提琴。 –

0

要刪除屬性,或更好的,無效的屬性,你必須使用:

$('input#text' + n + 1).removeAttr('disabled'); 
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/

+0

在4個文本框之後不起作用。我想我可以修改它的工作。 – user1817626

+0

offcourse它不會在4個文本框之後工作,因爲下一個框沒有像'text1','text2'的id。我這樣做的目的是爲了防止包含其他非必要的輸入元素..繼續添加id到其他輸入作爲'text6','text7' ...並且它將工作。 –