如果选中复选框,jquery 将禁用下一个元素
如果选中复选框,如何禁用文本框。 我有几个彼此相邻的文本框和复选框。
HTML:
<form id="form">
<input type="checkbox" name="deposit_checked"> <input type="text" name="deposit_value">
<input type="checkbox" name="booking_checked"> <input type="text" name="booking_value">
<input type="checkbox" name="referral_checked"> <input type="text" name="referral_value">
</form>
我可以使用下面的代码单独完成:
$("input[name=deposit_checked]").change(function(){
if( $("input[name=deposit_checked]").is(":checked") ) {
$("input[name=deposit_value]").attr("disabled", false);
} else {
$("input[name=deposit_value]").attr("disabled", true);
}
})
为了节省时间,我尝试使用 .each() 和 .next() 函数,但没有成功:
$("#form input[type=checkbox]").each(function() {
$(this).change(function(){
if( $(this).is(":checked") ) {
$(this).next().attr("disabled", false);
} else {
$(this).next().attr("disabled", true);
}
})
})
How do I disabled textbox if checkbox is checked.
I've got a few textboxes and checkboxes next to each other.
HTML:
<form id="form">
<input type="checkbox" name="deposit_checked"> <input type="text" name="deposit_value">
<input type="checkbox" name="booking_checked"> <input type="text" name="booking_value">
<input type="checkbox" name="referral_checked"> <input type="text" name="referral_value">
</form>
I can do it individually with code below:
$("input[name=deposit_checked]").change(function(){
if( $("input[name=deposit_checked]").is(":checked") ) {
$("input[name=deposit_value]").attr("disabled", false);
} else {
$("input[name=deposit_value]").attr("disabled", true);
}
})
to save time, I tried using .each() and .next() function but no luck:
$("#form input[type=checkbox]").each(function() {
$(this).change(function(){
if( $(this).is(":checked") ) {
$(this).next().attr("disabled", false);
} else {
$(this).next().attr("disabled", true);
}
})
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您为
disabled
属性设置了错误的值。这是修复方法:这是 jsfiddle 上的工作示例。请注意,所有 javascript 都应在
$(window).load()
处理程序中声明。You were setting wrong value for the
disabled
attribute. Here is the fix:Here is the working example at jsfiddle. Note that the all the javascript should be declared in the
$(window).load()
handler.应该这样做:
记住在开始时设置字段和复选框的状态。例如:全部不勾选并禁用。
+您可能想要更改选择器中的#form 位。
This should do:
Remember to set the fields' and checkboxes' state in the beginning. For example: all unchecked and disabled.
+You may want to change the #form bit in the selector.
我猜你想隐藏并显示与其复选框相关的文本框,所以你可以通过附加更改事件来做到这一点,这是如何完成的:
每次更改复选框的值时都会触发
change
事件处理程序,其中
.chkboxclass
是所有复选框的类,.txtboxclass
是所有文本框i guess you want to hide n show the texbox respective to its checkbox, so you can do this by attaching change event, this is how it is done:
change
event handler is fired every time the value of the check box is changedwhere
.chkboxclass
is class for all checkboxes and.txtboxclass
is class for all textboxes为了最大限度地减少 DOM 对象的选择,请使用诸如 span 之类的内容覆盖输入。
您可以在此处查看此示例: http://jsfiddle.net/g4mQR/
JS 代码
To minimize DOM objects selection, cover inputs in somethings like span.
You can see this example here: http://jsfiddle.net/g4mQR/
JS code