在ajax成功指令

时间:2017-10-03 14:17:36

标签: jquery ajax

我尝试实现简单的编码,但出于某种原因我无法理解,属性在ajax成功函数中不再起作用。

$('#modaleCalendarEvent #tbPrenomPatient, #modaleCalendarEvent 
    #tbNomPatient').change(function(){
    CheckNomEtPrenom();
});

...

function CheckNomEtPrenom(){
    var prenom = $('#modaleCalendarEvent #tbPrenomPatient').val();
    var nom = $('#modaleCalendarEvent #tbNomPatient').val();

    ......

    $.ajax({
        type: "POST",
        url: "actions/blahblah.php",
        data: params,                  
        dataType: "json",
        dataFilter: function(data, type){ 
            return data;
        },
        error: function(xhj, statut, thrown){
            alert('Erreur: '+xhj.responseText);
        },
        success: function(resultat){
            if(resultat.Valeur == -1 || resultat.Valeur == 1)
            {
                $('#modaleCalendarEvent #cbxModalePatients').val(resultat.PatientID);
                $('#modaleCalendarEvent #tbManuel').removeAttr('checked'); // HERE
                $('#modaleCalendarEvent #tbManuel').trigger('change');
                Notify("info", prenom + " " + nom + " already exists. Selection updated");
            }
            else // -2 existe pas en base
            {
                VerifieMetier();
            }

            HideLoaderPage();
        }
    });
}

在我调用ajax之前,我可以(甚至通过控制台)添加或删除属性'已检查'在#tbManuel成功。 但是当我成功使用ajax部分时,删除或添加属性并不起作用。以图形方式,它不会选中或取消选中该复选框。并没有提出任何事件。

我可以手动触发它,但仍未设置或删除已检查的atttribute,我无法对其进行测试。

在几秒钟之后发出指令的计时器既不起作用也不起作用。 我进入了我的内部成功指示,我的" resultat.Valeur"设置正确。在chrome中调试我可以逐步看到。

有人有解释吗?也许是一个解决方案? 这是一个简单的案例,但非常奇怪。就像ajax成功指令在另一个上下文或类似的东西。

非常感谢

2 个答案:

答案 0 :(得分:1)

正如Rory McCrossan写的那样,不要使用属性来检查/取消确认,因为它会产生未知的行为。

如果您想强制取消选中输入,请使用$('[selection]').prop('checked', false);如果您只想切换其状态,请使用$('[selection]').click()

答案 1 :(得分:0)

好的,它正在发挥作用。 只需点击一下复选框就可以了解它。

非常感谢所有人的帮助和快速解答! 我还学习使用prop()而不是removeattr()和attr()

度过美好的一天!