如果选中了复选框,我将使用此处找到的脚本来更新我的数据库。 https://stackoverflow.com/posts/4592766/revisions
如果我选中一个未经检查的框,它就会起作用。
然而,如果我取消选中复选框,我似乎无法正常工作。它不会更新数据库。
以下是修改后的代码:
$(document).ready(function() {
$("input[type=checkbox]").click(function() {
var isSel = this.checked;
var isNotSel = this.unchecked; //added
$.ajax({
url: 'file.php',
type: 'POST',
dataType: 'json',
data: {
id : this.id,
isSelected : isSel,
isNotSelected : isNotSel // added
},
success: function(data) {
alert('updated');
},
error: function() {
alert('error');
}
});
});
});
这是显示复选框的代码(从数据库创建):
if($status == 'pending')
{ echo '<input type="checkbox" name="status" id='.$submission_id.' >' .
$task_name . '<br>'; }
if($status == 'done')
{ echo '<input type="checkbox" name="status" id='.$submission_id.' checked>'
. $task_name . '<br>'; }
这是file.php的代码
if ($_POST && isset($_POST['isSelected'])) {
$sql = 'UPDATE ft_form_53 SET status = "done" WHERE submission_id = ' . $_POST['id'];
// check if the query was executed
if(mysql_query($sql, $link)){
// everything is Ok, the data was inserted
print(1);
} else {
// error happened
print(0);
}
}
if ($_POST && isset($_POST['isNotSelected'])) {
$sql = 'UPDATE ft_form_53 SET status = "pending" WHERE submission_id = ' . $_POST['id'];
// check if the query was executed
if(mysql_query($sql, $link)){
// everything is Ok, the data was inserted
print(1);
} else {
// error happened
print(0);
}
}
不会抛出任何错误消息。有什么想法吗?
答案 0 :(得分:1)
更改
var isNotSel = this.unchecked;
到
var isNotSel = !isSel;
或
var isNotSel = !this.checked;
复选框没有unchecked
属性。它们有一个布尔checked
属性(true
如果选中,false
如果没有)。你已经把它抓到了isSel
,所以......
答案 1 :(得分:0)
搞定了。感谢shehary 点击到更改修改,感谢!this.checked 提示T.J. Crowder。我最终使用两个单独的脚本,但它的工作原理:)再次感谢所有!
以下一项是取消选中。
$(document).ready(function() {
$("input[type=checkbox]").change(function() {
var isNotSel = !this.checked;
$.ajax({
url: 'file.php',
type: 'POST',
dataType: 'json',
data: {
id : this.id,
isNotSelected : isNotSel
},
success: function(data) {
alert('updated');
},
error: function() {
alert('error');
}
});
});
});