我有一个按钮,按下时会调用带有一些参数的ajax函数,然后ajax会在数据库上发布一些值。在用户离开应用程序或刷新页面之前,用户可能会多次使用此表单。到目前为止,这很有效!
在我的上一次更新中,我添加了一个复选框,该复选框将包含我想要使用上述ajax函数保存在数据库中的另一条信息。因此,当按下按钮时,我检查是否选中了复选框,并且我发送给ajax函数true或false。到目前为止,这也很有效!
但是,最不正常的事情是,最后一个功能仅适用于第一次!每当用户点击按钮时,无论选中的复选框是什么状态,它都会提交第一次的状态。就像checkbox.checked属性在第一次按下按钮后冻结一样。
这可能是无关紧要的,但我也尝试使用切换按钮,我也遇到了同样的问题!
您对如何克服这个问题有所了解吗?
非常感谢!
这是代码: 表单:它有1个切换按钮和3个调用sendTask函数的按钮。
<button type='button' class='btn btn-info' data-toggle='button' style='margin-top: 5px; width: 216px; height: 40px;' name='yesterday".$category['id']."' id='yesterday".$category['id']."'>This one was yesterday!</button></div>
<button class='btn btn-".$buttoncolor."' id='btn-spec-small' type='button' onClick='sendTask(".$category['id'].", '1', yesterday".$category['id'].")'>0-15min</button>
<button class='btn btn-".$buttoncolor."' id='btn-spec-small' type='button' onClick='sendTask(".$category['id'].", '2', yesterday".$category['id'].")'>15-60min</button>
<button class='btn btn-".$buttoncolor."' id='btn-spec-small' type='button' onClick='sendTask(".$category['id'].", '3', yesterday".$category['id'].")'>60+min</button>
sendTask函数:
function sendTask(category, weight, checkbox){
var ieri = $(checkbox).hasClass('active');
TaskSubmit(category, weight, ieri);
};
TaskSubmit函数:
function TaskSubmit (taskidsubmitted, weight, ieri) {
$.ajax({
url: 'submit_task.php?taskid=' + taskidsubmitted + '&weight=' + weight + '&ieri=' + ieri,
success: function (response) {
if (response !== "fail") {
document.getElementById('score-label').innerHTML = response;
} else {
document.location = "index.php";
}
}
});
}
问题是这一行:
var ieri = $(checkbox).hasClass('active');
仅更改按下按钮的第一次。所有其他时间保持第一个状态(真或假)。
答案 0 :(得分:0)
我相信你应该使用.prop()。
function sendTask(category, weight, checkbox){
var ieri = ($(checkbox).prop('checked') != undefined);
TaskSubmit(category, weight, ieri);
};
浏览器 - 如果取消选中该复选框,则删除此属性。如果不是这种情况,请使用console.log()
查看它正在做什么。
在您的html中,您将yesterdaySomeCategory
传递给该函数,而不是"yesterdaySomeCategory"
。我不确定jQuery的用途是什么,但选择元素的常规方法是$("#yesterdaySomeCategory")
。尝试将其更改为
<button class='btn btn-".$buttoncolor."' id='btn-spec-small' type='button' onClick='sendTask(".$category['id'].", '1', \"#yesterday".$category['id']."\")'>0-15min</button>