我尝试实现简单的编码,但出于某种原因我无法理解,属性在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成功指令在另一个上下文或类似的东西。
非常感谢
答案 0 :(得分:1)
正如Rory McCrossan写的那样,不要使用属性来检查/取消确认,因为它会产生未知的行为。
如果您想强制取消选中输入,请使用$('[selection]').prop('checked', false)
;如果您只想切换其状态,请使用$('[selection]').click()
。
答案 1 :(得分:0)
好的,它正在发挥作用。 只需点击一下复选框就可以了解它。
非常感谢所有人的帮助和快速解答! 我还学习使用prop()而不是removeattr()和attr()
度过美好的一天!