jQuery 复选框更改和单击事件
$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>
这里 .change()
使用复选框状态更新文本框值。我使用 .click()
来确认取消选中的操作。如果用户选择取消,复选标记将恢复,但在确认之前会触发 .change()
。
这会使事情处于不一致的状态,并且当选中该复选框时文本框显示 false。
如何处理取消并保持文本框值与选中状态一致?
$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>
Here .change()
updates the textbox value with the checkbox status. I use .click()
to confirm the action on uncheck. If the user selects cancel, the checkmark is restored but .change()
fires before confirmation.
This leaves things in an inconsistent state and the textbox says false when the checkbox is checked.
How can I deal with the cancellation and keep textbox value consistent with the check state?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(21)
尝试
Try
试试这个:
Try this:
在 JSFiddle 中测试并执行您所要求的操作。此方法的另一个好处是在单击与复选框关联的标签。
更新答案:
原始答案:
Tested in JSFiddle and does what you're asking for.This approach has the added benefit of firing when a label associated with a checkbox is clicked.
Updated Answer:
Original Answer:
演示
使用
mousedown
Demo
Use
mousedown
如果您使用
,大多数答案都不会捕获它(大概)。这意味着当您单击标签时,它将选中该框,而不是直接单击该复选框。 (不完全是问题,但这里往往会出现各种搜索结果)
在这种情况下,您可以使用:
早期版本的 jQuery:
使用 jQuery 1.6.4 的 JSFiddle 示例
jQuery 1.7+
带有最新 jQuery 2.x 的 JSFiddle 示例
Most of the answers won't catch it (presumably) if you use
<label for="cbId">cb name</label>
. This means when you click the label it will check the box instead of directly clicking on the checkbox. (Not exactly the question, but various search results tend to come here)In which case you could use:
Earlier versions of jQuery:
JSFiddle example with jQuery 1.6.4
jQuery 1.7+
JSFiddle example with the latest jQuery 2.x
好吧..只是为了避免头痛(这里已经过了午夜),我可以想出:
希望它有帮助
Well .. just for the sake of saving a headache (its past midnight here), I could come up with:
Hope it helps
迟到的答案,但您也可以使用
on("change")
,即:Late answer, but you can also use
on("change")
, i.e.:这里是
Html
JavaScript
Here you are
Html
JavaScript
对我来说这很有效:
For me this works great:
只需使用点击事件
我的复选框 ID 是 CheckAll
simply just use the click event
my check box id is CheckAll
摆脱更改事件,而是更改单击事件中文本框的值。与其返回确认的结果,不如将其捕获在 var 中。如果为真,则更改该值。然后返回变量。
Get rid of the change event, and instead change the value of the textbox in the click event. Rather than returning the result of the confirm, catch it in a var. If its true, change the value. Then return the var.
单击复选框并检查同一事件循环中的值是问题所在。
试试这个:
演示:http://jsfiddle.net/mrchief/JsUWv/6/
Checkbox click and checking for the value in the same event loop is the problem.
Try this:
Demo: http://jsfiddle.net/mrchief/JsUWv/6/
如果您使用 iCheck Jquery 使用以下代码
if you are using the iCheck Jquery use the below code
试试这个
Try this
我不知道为什么每个人都把事情搞得这么复杂。
这就是我所做的一切。
I am not sure why everyone is making this so complicated.
This is all I did.
通过名称获取无线电值
get radio value by name