【发布时间】:2013-11-22 03:56:55
【问题描述】:
我正在使用一个变量来跟踪用户单击复选框时将出现的文本框。有一系列 4 个复选框,无论用户首先单击哪个复选框,都会出现一个复选框。我在这里提供的解决方案可以正常工作并且完全按照我的意愿进行,但我想知道是否有更好的方法可以使用 jQuery 来做到这一点。
<input name="purposeOfFees" type="checkbox" value="New" class="radio expendable1" />Expendable materials1
<br />
<input name="purposeOfFees" type="checkbox" value="New" class="radio expendable2" />Expendable materials2
<br />
<input name="purposeOfFees" type="checkbox" value="New" class="radio expendable3" />Expendable materials3
<br />
<input name="purposeOfFees" type="checkbox" value="New" class="radio expendable4" />Expendable materials4
<br />
<br />
<p class="text purposeOfFeesText">For each check box above give a detailed description of the expenditures.</p>
<p>
<textarea rows="" cols="" class="textarea expendable1 purposeOfFeesText" name="RITextArea"></textarea>
</p>
<p>
<textarea rows="" cols="" class="textarea expendable2 purposeOfFeesText" name="RITextArea"></textarea>
</p>
<p>
<textarea rows="" cols="" class="textarea expendable3 purposeOfFeesText" name="RITextArea"></textarea>
</p>
<p>
<textarea rows="" cols="" class="textarea expendable4 purposeOfFeesText" name="RITextArea"></textarea>
</p>
这里是 jQuery:
var textboxCounter = 0;
$('.purposeOfFeesText').hide();
$('.radio.expendable1, .radio.expendable2, .radio.expendable3, .radio.expendable4').click(function () {
if ($(this).is(':checked')) {
textboxCounter += 1;
$('.textarea.expendable' + textboxCounter).show(500);
if (textboxCounter == 1) { $('.text.purposeOfFeesText').show();
}
} else {
$('.textarea.expendable' + textboxCounter).hide();
$('.textarea.expendable' + textboxCounter).prop('value', '');
textboxCounter -= 1;
if (textboxCounter < 1) { $('.text.purposeOfFeesText').hide();
}
}
});
这是一个 jsFiddle:http://jsfiddle.net/L7ydk/
就像我说的那样,这个解决方案正按我的意愿为我工作,但我想知道是否有任何功能或其他方式可以让我组织这个更有效或更符合良好编程实践。欢迎提出任何建议,并感谢您查看此内容。
【问题讨论】:
标签: javascript jquery html