我有一个侦听复选框更改的函数。页面加载时,复选框将勾选或取消选中,具体取决于之前完成的步骤。
我想记录是否更改了复选框。如果它被更改,然后再次更改,它将被重置为它开始的值,因此意味着它的值没有变化。
我编写了以下代码来执行此操作。
//Checkboxes
var change ="<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"1\"/>";
var nochange ="<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"0\"/>";
var changed=false;
$(".change-event").change(function(){
//alert("checked");
if(changed==false) {
$(this).next(".changed").remove();
$(this).after(change);
changed=true;
}
if(changed==true) {
$(this).next(".changed").remove();
$(this).after(nochange);
changed=false;
}
});
更改功能中的if语句不起作用。更改功能本身没有问题,因为注释掉的警报工作正常。
我已经尝试了if(!checked)以及if(checked)作为条件,但它仍然无效。
帮助表示赞赏。
答案 0 :(得分:4)
你需要
if(changed==false) {
$(this).next(".changed").remove();
$(this).after(change);
changed=true;
} else {
$(this).next(".changed").remove();
$(this).after(nochange);
changed=false;
}
否则changed
的起始值为false,则第一个if条件满足...它会将changed
的值更改为true
。然后再次检查第二个条件它将被满足,因为changed
的值已经被第一个if
改变,因此第二个块也将被调用...因此它否定了所做的所有更改第一个街区。
但看起来它可以简化为
var change = "<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"1\"/>";
var nochange = "<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"0\"/>";
var changed = false;
$(".change-event").change(function () {
$(this).next(".changed").remove();
$(this).after(changed ? nochange : change);
changed = !changed;
});