2012-03-08 70 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

相关问题