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。

如何处理取消并保持文本框值与复选状态一致?

1797569 次浏览

Demo

使用# EYZ0

$('#checkbox1').mousedown(function() {
if (!$(this).is(':checked')) {
this.checked = confirm("Are you sure?");
$(this).trigger("change");
}
});

删除change事件,改为更改单击事件中文本框的值。不是返回confirm的结果,而是在一个var中捕获它。如果它为真,则更改值。然后返回var。

嗯. .为了避免头痛(这里已经过了午夜),我可以想出:

$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
var ans = confirm("Are you sure?");
$('#textbox1').val(ans);
}
});

希望能有所帮助

试试这个

$('#checkbox1').click(function() {
if (!this.checked) {
var sure = confirm("Are you sure?");
this.checked = sure;
$('#textbox1').val(sure.toString());
}
});

单击复选框并检查同一事件循环中的值是问题所在。

试试这个:

$('#checkbox1').click(function() {
var self = this;
setTimeout(function() {


if (!self.checked) {
var ans = confirm("Are you sure?");
self.checked = ans;
$('#textbox1').val(ans.toString());
}
}, 0);
});

演示:# EYZ0

$(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')) {
if(!confirm("Are you sure?"))
{
$("#checkbox1").prop("checked", true);
$('#textbox1').val($(this).is(':checked'));
}
}
});
});

JSFiddle中测试并执行您所要求的。这种方法还有一个额外的好处,即当单击与复选框关联的标签时触发。

答:更新

$(document).ready(function() {
//set initial state.
$('#textbox1').val(this.checked);


$('#checkbox1').change(function() {
if(this.checked) {
var returnVal = confirm("Are you sure?");
$(this).prop("checked", returnVal);
}
$('#textbox1').val(this.checked);
});
});

最初的回答:

$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));


$('#checkbox1').change(function() {
if($(this).is(":checked")) {
var returnVal = confirm("Are you sure?");
$(this).attr("checked", returnVal);
}
$('#textbox1').val($(this).is(':checked'));
});
});
// this works on all browsers.


$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));


$('#checkbox1').change(function(e) {
this.checked =  $(this).is(":checked") && !!confirm("Are you sure?");
$('#textbox1').val(this.checked);
return true;
});
});

如果使用<label for="cbId">cb name</label>,大多数答案都不会捕获它(大概)。这意味着当您单击标签时,它将选中复选框,而不是直接单击复选框。(不完全是这个问题,但各种搜索结果往往会出现在这里)

<div id="OuterDivOrBody">
<input type="checkbox" id="checkbox1" />
<label for="checkbox1">Checkbox label</label>
<br />
<br />
The confirm result:
<input type="text" id="textbox1" />
</div>

在这种情况下,你可以使用:

# EYZ0

$('#OuterDivOrBody').delegate('#checkbox1', 'change', function () {
// From the other examples
if (!this.checked) {
var sure = confirm("Are you sure?");
this.checked = !sure;
$('#textbox1').val(sure.toString());
}
});

JSFiddle的例子,jQuery 1.6.4

# EYZ0

$('#checkbox1').on('change', function() {
// From the other examples
if (!this.checked) {
var sure = confirm("Are you sure?");
this.checked = !sure;
$('#textbox1').val(sure.toString());
}
});

JSFiddle的例子与最新的jQuery 2.x

  • 添加了jsfiddle示例和带有可点击复选框标签的html

只是简单地使用点击事件 我的复选框id是CheckAll

     $('#CheckAll').click(function () {


if ($('#CheckAll').is(':checked') == true) {


alert(";)");
}
});

对我来说,这很有效:

$('#checkboxID').click(function () {
if ($(this).attr('checked')) {
alert('is checked');
} else {
alert('is not checked');
}
})

给你

超文本标记语言

<input id="ProductId_a183060c-1030-4037-ae57-0015be92da0e" type="checkbox" value="true">

JavaScript

<script>
$(document).ready(function () {


$('input[id^="ProductId_"]').click(function () {


if ($(this).prop('checked')) {
// do what you need here
alert("Checked");
}
else {
// do what you need here
alert("Unchecked");
}
});


});
</script>
$('#checkbox1').click(function() {
if($(this).is(":checked")) {
var returnVal = confirm("Are you sure?");
$(this).attr("checked", returnVal);
}
$('#textbox1').val($(this).is(':checked'));
});




<div id="check">
<input type="checkbox" id="checkbox1" />
<input type="text" id="textbox1" />
</div>

通过的名字获取无线电值

 $('input').on('className', function(event){
console.log($(this).attr('name'));
if($(this).attr('name') == "worker")
{
resetAll();
}
});
我不明白为什么每个人都把这件事搞得这么复杂。 这就是我所做的一切。< / p >
if(!$(this).is(":checked")){ console.log("on"); }

如果你正在使用iCheck Jquery使用下面的代码

 $("#CheckBoxId").on('ifChanged', function () {
alert($(this).val());
});

迟答,但也可以用on("change")

$('#check').on('change', function() {
var checked = this.checked
$('span').html(checked.toString())
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="check"> <span>Check me!</span>

 $("#person_IsCurrentAddressSame").change(function ()
{
debugger
if ($("#person_IsCurrentAddressSame").checked) {
debugger


}
else {


}


})

试一试

checkbox1.onclick= e => {
if(!checkbox1.checked) checkbox1.checked = !confirm("Are you sure?");
textbox1.value = checkbox1.checked;
}
<input type="checkbox" id="checkbox1" /><br />
<input type="text" id="textbox1" value='false'/>

试试这个:

    let checkbox = document.getElementById('checkboxId');
if (checkbox.checked != true)
{
alert("select checkbox");
}