2012-03-08 110 views
1

所以我有一個在這裏建成一半的窗體。爲什麼.next()方法在這裏不起作用,jQuery?

我有10行,我不希望下一行可用,直到當前行中有東西。

Here is the Fiddle

JS:

$(document).ready(function(e){ 
    var openLines = $('.lineToText'); 
    if (openLines.length){ 
     //$('textarea').css('display', 'none'); 
     openLines.each(function(index, element){ 
      if (index>0) { 
       $(this).prop('disabled', true); 
       } 
      }); 
     $('.lineToText').on('keyup', this, function(){ 
      if (this.value.length){ 
       $(this).next('.lineToText').prop('disabled', false); //<== thought this would do the job but it's not 
       } else { 
        $(this).prop('disabled', true); 
        } 
      }); 
     } 
    }); 

HTML:

<TABLE SUMMARY="layout table" CELLPADDING="1" CELLSPACING="0" BORDER="0"> 

<TR> 

<TD VALIGN="TOP"><INPUT ID="Q1_96" ONCLICK="ExclusiveChoiceClick('Q1:96');" ONKEYPRESS="return true;" TABINDEX="100" TYPE="CHECKBOX" NAME="Q1:96" VALUE="96" ></TD><TD CLASS="CHOICES" VALIGN="TOP" >1: <INPUT class="lineToText" type="text" size="50"><br> 

2: <INPUT class="lineToText" type="text" size="50"><br> 

3: <INPUT class="lineToText" type="text" size="50"><br> 

4: <INPUT class="lineToText" type="text" size="50"><br> 

5: <INPUT class="lineToText" type="text" size="50"><br> 

6: <INPUT class="lineToText" type="text" size="50"><br> 

7: <INPUT class="lineToText" type="text" size="50"><br> 

8: <INPUT class="lineToText" type="text" size="50"><br> 

9: <INPUT class="lineToText" type="text" size="50"><br> 

10: <INPUT class="lineToText" type="text" size="50"><BR><TEXTAREA ID="Q1_96_O" TABINDEX="101" COLS="25" ROWS="5" CLASS="OPENENDEDANSWER" NAME="Q1:O"></TEXTAREA></TD> 

</TR> 

<TR> 

<TD VALIGN="TOP"><INPUT ID="Q1_99" ONCLICK="ExclusiveChoiceClick('Q1:99');" ONKEYPRESS="return true;" TABINDEX="102" TYPE="CHECKBOX" NAME="Q1:99" VALUE="99" ></TD><TD CLASS="CHOICES" VALIGN="TOP">Don't Know</TD> 

</TR> 

</TABLE> 

思想$(本)。接下來( 'lineToText')將是合適的選擇下一個項目,但它沒有,誰能告訴我我錯過了什麼?

回答

3

jQuery Docs

描述:獲取緊隨其後的各元素的同級集合中匹配的元素。如果提供了一個選擇器,只有當它與該選擇器匹配時纔會檢索下一個兄弟。

改爲使用nextAll(".lineToText:first")

小提琴here

的原因,你的方法行不通是因爲<br />元素在你的<input />元素之間的。

+0

這就是聰明的,謝謝,我會盡快它讓我接受...... – 2012-03-08 15:52:08

0

而且,試試這個:

if (this.value.length > 0) { 
    $(this).siblings('.lineToText').first().removeAttr('disabled'); 
} 
+0

回答上述工作,this.value.length返回一個數字,沒有如果是不是我會得到0(假),如果有什麼我會得到一個正數(真) – 2012-03-08 17:58:12

相關問題