我有一个只有复选框的表单,我最后还有另一个选项。我想在检查其他选项时打开文本框或textarea,用户可以在其中编写自己的文本。
答案 0 :(得分:3)
简单,真的。您有一个如下所示的复选框组:
<h3>Which animal do you like the most?</h3>
<input type="checkbox" value="cats" id="cats" name="animals" class="animals" />
<label for="cats">cats</label>
<br/>
<!--extra checkboxes-->
<input type="checkbox" value="other" id="other" name="animals" class="animals" />
<label for="other">other</label>
然后,您要为此写一个更改事件:
$(".animals").change(function () {
//check if its checked. If checked move inside and check for others value
if (this.checked && this.value === "other") {
//add a text box next to it
$(this).next("label").after("<input id='other-text' placeholder='please enter animal' type='text'/>")
} else {
//remove if unchecked
$("#other-text").remove();
}
});
演示:http://jsfiddle.net/hungerpain/KqRpM/
您的标记会在最后<input>
之后有额外label
:
<input type="checkbox" value="other" id="other" name="animals" class="animals" />
<label for="other">other</label>
<input id='other-text' placeholder='please enter animal' type='text' />
在开头使用css隐藏other-text
:
#other-text{
display: none;
}
然后你看起来像JS:
$(".animals").change(function () {
//check if the selected option is others
if (this.value === "other") {
//toggle textbox visibility
$("#other-text").toggle();
}
});
演示:http://jsfiddle.net/hungerpain/KqRpM/1/
但是那说,在你的情况下,如果它是一个单选按钮组则更好。只需将标记从type=checkbox
更改为type=radio
即可。 JS与方法1复选框保持一致。