我有一个带有许多复选框的表单,每次单击时都会调用一个 PHP 页面来更新数据库。
HTML
<form>
<input type="checkbox" name="status1" id="event_status1" value="1" >
<input type="checkbox" name="status2" id="event_status2" value="1" >
<input type="checkbox" name="status3" id="event_status3" value="1" >
</form>
查询
$('input:checkbox').change(function(e) {
e.preventDefault();
var isChecked = $("input:checkbox").is(":checked") ? 1:0;
$.ajax({
type: 'POST',
url: "admin-ajax.php",
data: { event_status:$("input:checkbox").attr("id"), status:isChecked},
success: function (response) {
console.log(response);
}
});
});
当我单独选中/取消选中每个复选框时,它运行良好。
如果我选中 3 个框,如果我取消选中它,我最后选中的将不会发送“0”状态,但会始终发送“1”。
您必须使用input
触发更改事件的dom 而不是这个
$("input:checkbox")
你必须做这样的事情:
$('input:checkbox').change(function (e) {
e.preventDefault();
var self = $(this);
var isChecked = self.is(":checked") ? 1 : 0;
$.ajax({
type: 'POST',
url: "admin-ajax.php",
data: {event_status: self.attr("id"), status: isChecked},
success: function (response) {
console.log(response);
}
});
});
如果你想在data
外面准备 ajax对象,$.ajax
你可以这样做:
$('input:checkbox').change(function (e) {
e.preventDefault();
var data = {event_status: $(this).attr("id"), status: +$(this).is(":checked")};
$.ajax({
type: 'POST',
url: "admin-ajax.php",
data: data,
success: function (response) {
console.log(response);
}
});
});
注意:+
in+$(this).is(":checked")
将boolean转为Number,false
变成0,true
变成1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句