所以我有一个在这里建了一半的表格。
我有10行,我不希望下一行可用,直到当前行中有东西。
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>
以为$(this).next('。lineToText')适合选择下一个项目但是没有,有人能告诉我我缺少什么吗?
答案 0 :(得分:3)
来自jQuery Docs:
描述:获取匹配元素集中每个元素的紧随其后的兄弟。如果提供了选择器,则仅当它与该选择器匹配时,它才会检索下一个兄弟。
改为使用nextAll(".lineToText:first")
。
小提琴here
您的方法不起作用的原因是因为<br />
元素之间的<input />
元素。
答案 1 :(得分:0)
另外,试试这个:
if (this.value.length > 0) {
$(this).siblings('.lineToText').first().removeAttr('disabled');
}