按下按钮后,复选框状态不会更改

时间:2013-06-28 17:16:58

标签: php javascript ajax checkbox

我有一个按钮,按下时会调用带有一些参数的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'].", &#39;1&#39;, yesterday".$category['id'].")'>0-15min</button>
            <button class='btn btn-".$buttoncolor."' id='btn-spec-small' type='button' onClick='sendTask(".$category['id'].", &#39;2&#39;, yesterday".$category['id'].")'>15-60min</button>
            <button class='btn btn-".$buttoncolor."' id='btn-spec-small' type='button' onClick='sendTask(".$category['id'].", &#39;3&#39;, 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');

仅更改按下按钮的第一次。所有其他时间保持第一个状态(真或假)。

1 个答案:

答案 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'].", &#39;1&#39;, \"#yesterday".$category['id']."\")'>0-15min</button>