如果复选框值与原始选中/未选中状态不同,则使用javascript显示警报
所以基本上我有几个复选框,它们是选中的还是未选中的,这取决于mysql数据库中的值。它们的选中/未选中值也存储在名为“def”的属性中,该属性为0或选中。我还编写了一些javascript,将attr应用于名为“checked”的复选框,当您选中和取消选中复选框时,这些复选框会发生变化。所以我要做的是在javascript中比较这两个值,当用户单击复选框时选中的attr被更改时,如果选中的attr为true,def为0,那么它应该发送一个警报,说明该值与默认值不同,否则如果def为0,checked为false,它不应该做任何事情。我正在学习javascript,这是迄今为止我在JSFIDLE中所学的内容: 这是我的HTML复选框:如果复选框值与原始选中/未选中状态不同,则使用javascript显示警报,javascript,checkbox,Javascript,Checkbox,所以基本上我有几个复选框,它们是选中的还是未选中的,这取决于mysql数据库中的值。它们的选中/未选中值也存储在名为“def”的属性中,该属性为0或选中。我还编写了一些javascript,将attr应用于名为“checked”的复选框,当您选中和取消选中复选框时,这些复选框会发生变化。所以我要做的是在javascript中比较这两个值,当用户单击复选框时选中的attr被更改时,如果选中的attr为true,def为0,那么它应该发送一个警报,说明该值与默认值不同,否则如果def为0,check
<input class='checkboxstatus' def='0' type=checkbox></input>
正确的语法应该是
if (this.checked && $(this).attr("def") == 0)
但是,def
不是可识别或有效的属性,它应该是data def
才能完全有效。然后你可以做:
if (this.checked && $(this).data("def") == 0)
这是一把小提琴:
您需要使用jQuery函数.attr()
()来获取def
属性。我还将其更改为data deffor,并将逻辑分解为另一个函数以提高可读性
您也不需要在复选框上设置属性已选中
。您可以使用jQuery的.is(':checked')
来检查它是否被选中
代码如下:
HTML:
this.setAttribute('checked',this.checked)代码>--Hmm,考虑到这是复选框的默认行为,似乎是多余的-只是说:)谢谢,这帮我搞定了。我接受了你的建议,使用了数据定义。@John--很高兴听到这个消息!如果这一切都完成了,一定要标出答案。
if (this.checked && $(this).data("def") == 0)
<input class='checkboxstatus' data-def='1' type="checkbox" />
$('.checkboxstatus').click(function(){
if(checkboxChangedFromOriginal($(this))) {
alert('checkbox has changed from original value');
}
});
function checkboxChangedFromOriginal(checkbox) {
return (checkbox.is(':checked') && checkbox.attr('data-def') == '0') ||
(!checkbox.is(':checked') && checkbox.attr('data-def') == '1');
}