是否有可能在单击复选框时停止更改,挂起某些复选框

Is it possible to stop a checkbox from changing when clicked, pending some check?

本文关键字:复选框 挂起 有可能 单击 是否      更新时间:2023-09-26

我今天遇到了一种情况,我想要一个复选框不改变,除非关联的ajax调用成功。"不更改"的意思是,如果复选框当前被选中,那么它不应该显示为未选中,直到ajax调用完成并成功。

HTML例子:

<input type="checkbox" id="a" />
示例(psuedo) jQuery:
$("#a").change(function(e) {
    //somehow stop the checkbox from showing as checked in the UI
    $.ajax...
        success: function() {
            //checkbox should now show as checked in the UI
        },
        error: function() {
            //show error to user.  checkbox should still be unchecked.
        }
});

各种谷歌搜索只出现了获取或更改复选框状态的参考。

现在我只是在错误的情况下改变复选框的状态。

我想这可以通过使用图像来表示复选框并在适当的时候更改它们来完成,但我正在寻找使用"本地"HTML元素,CSS和/或Javascript(或一些Javascript库)的解决方案。只是好奇stackoverflow用户对此有什么看法。

谢谢!

尝试使用代替change(), click()功能,并防止其中的默认动作。成功后,您可以手动更改复选框状态。

这里的例子

$("#a").click(function(e) { 
        $.ajax...
            success: function() {
               $('a').attr('checked','checked')
            },
            error: function() {
                //show error to user.  check box should still be unchecked.
            }
        e.preventDefault();
        return false;
    });

是否可以在单击复选框时阻止其更改,挂起一些检查吗?

是的,您可以在ajax查询运行时暂时禁用复选框。


似乎你已经使用jquery,基于此,你可以尝试:

$("#a").change(function(e) {
    $("input#a").attr("disabled", true); //disable input
    $.ajax...
        success: function() {
            $("input#a").removeAttr("disabled"); //re-enable input
        },
        error: function() {
            //show error to user.  check box should still be unchecked.
        }
});

注意:

您还应该启用error: function()中的checkbox,但我遵循您的评论,因为我不知道您想要完成什么。