繁体   English   中英

如何取消选中AJAX中的复选框?

[英]How to uncheck the checkbox in AJAX?

说真的,我已经尝试了一些我能想到的但是我仍然无法找到一种方法,一旦弹出警报就取消选中复选框。

var sessionvar;
            $.ajaxSetup({cache: false})
            $.get('test.php' ,function (data) {
                sessionvar = data;
                alert(sessionvar);
                if(checked){    
                    if(sessionvar > 2){
                        alert('You only allowed to select maximum 3');
                        setsession(sBorrowValue, "UNSET");
                        $(this).attr('checked', false);
                    }
                    else{
                        setsession(sBorrowValue, "SET");
                    }
                }
                else{
                    setsession(sBorrowValue, "UNSET");
                }
            });

我想在alert('You only allowed to select maximum 3');后取消选中该复选框alert('You only allowed to select maximum 3'); 但没有工作。 我也尝试过使用this.checked = false$(this).attr('checked', false); $(this).prop('checked', false); 但仍然不取消选中复选框。

注意: this.checked = false在ajax外部工作。 但是当我把它放在里面时,它不起作用。

您正在$.get编写代码并尝试使用$this来引用该checkbox 你确定这是对的吗? $(this)这里是未定义的。

您应该使用复选框实际ID:

$('#myCheckboxid').attr('checked', false); //or true

编辑

您的最终代码将如下所示:

var sessionvar;
$.ajaxSetup({cache: false})
$.get('test.php' ,function (data) {
    sessionvar = data;
    alert(sessionvar);
    if(checked){    
        if(sessionvar > 2){
            alert('You only allowed to select maximum 3');
            setsession(sBorrowValue, "UNSET");
            $('#myCheckboxid').attr('checked', false); //or true
        }
        else{
            setsession(sBorrowValue, "SET");
        }
    }
    else{
        setsession(sBorrowValue, "UNSET");
    }
});

没有if语句的另一种方法:

$(".checkbox").prop("checked", !$(".checkbox").prop("checked"));

所以!$(“。checkbox”)。prop(“checked”)等于当前检查状态的反面 - 调用切换选中的复选框以取消选中,反之亦然未选中复选框。

要选中/取消选中复选框,您需要:

$(this).prop('checked', false);    
$(this).prop('checked', true);

这是属性而不是属性。

注意:this.checked = false在ajax外部工作。 但是当我把它放在里面时,它不起作用。

所以你需要将“this”对象绑定到get函数:

 function setsession() { } var sBorrowValue; $(function () { $('#chk').on('click', function(e) { $.getJSON('https://api.github.com/repositories?since=800' ,function (data) { sessionvar = data; console.log('Now inside the ajax this is: ' + this.outerHTML); alert(sessionvar); if (this.checked){ if(sessionvar > 2){ alert('You only allowed to select maximum 3'); setsession(sBorrowValue, "UNSET"); // use prop $(this).prop('checked', false); } else{ setsession(sBorrowValue, "SET"); } } else{ setsession(sBorrowValue, "UNSET"); } }.bind(this)); }) }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <input type="checkbox" id="chk"> </form> 

您必须取消选中其ID而不是$(this)的复选框,您还必须检查复选框“已检查”的状态,或者不能通过复选框的ID检查。 有关详细信息,请参阅以下代码段。

 function setsession() { } var sBorrowValue; $(function () { $('#chk').on('click', function(e) { $.getJSON('https://api.github.com/repositories?since=800' ,function (data) { sessionvar = data; console.log('Now inside the ajax this is: ' + this.outerHTML); $("#chk").prop('checked',false); if ($("#chk").is(':checked')){ $("#chk").prop('checked',false); if(sessionvar > 2){ alert('You only allowed to select maximum 3'); setsession(sBorrowValue, "UNSET"); } else{ setsession(sBorrowValue, "SET"); } } else{ setsession(sBorrowValue, "UNSET"); } }.bind(this)); }) }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <input type="checkbox" id="chk"> </form> 

那好吧。 我确实解决了这个问题。 它实际上是关于在我的ajax函数中使用变量。

    var sessionvar;
        $.ajaxSetup({cache: false, async:false})
        $.get('test.php' ,function (data) {
            sessionvar = data;
            alert(sessionvar);
        });

        var sBorrowChecked = $('.sBorrow').attr('checked');
        alert(sBorrowChecked);
        if(checked){    
            if(sessionvar > 2){
                alert('You only allowed to select maximum 3');
                setsession(sBorrowValue, "UNSET");
                this.checked = false;

            }
            else{
                setsession(sBorrowValue, "SET");
            }
        }
        else{
            setsession(sBorrowValue, "UNSET");
        }

注意我改变了什么? 我使用async:false 这次我只是尝试使用this.checked = false 然后它工作。 但是我似乎听说这个async:false已经被弃用了。 所以我不确定这是否是一个好的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM