Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果复选框值与原始选中/未选中状态不同,则使用javascript显示警报_Javascript_Checkbox - Fatal编程技术网

如果复选框值与原始选中/未选中状态不同,则使用javascript显示警报

如果复选框值与原始选中/未选中状态不同,则使用javascript显示警报,javascript,checkbox,Javascript,Checkbox,所以基本上我有几个复选框,它们是选中的还是未选中的,这取决于mysql数据库中的值。它们的选中/未选中值也存储在名为“def”的属性中,该属性为0或选中。我还编写了一些javascript,将attr应用于名为“checked”的复选框,当您选中和取消选中复选框时,这些复选框会发生变化。所以我要做的是在javascript中比较这两个值,当用户单击复选框时选中的attr被更改时,如果选中的attr为true,def为0,那么它应该发送一个警报,说明该值与默认值不同,否则如果def为0,check

所以基本上我有几个复选框,它们是选中的还是未选中的,这取决于mysql数据库中的值。它们的选中/未选中值也存储在名为“def”的属性中,该属性为0或选中。我还编写了一些javascript,将attr应用于名为“checked”的复选框,当您选中和取消选中复选框时,这些复选框会发生变化。所以我要做的是在javascript中比较这两个值,当用户单击复选框时选中的attr被更改时,如果选中的attr为true,def为0,那么它应该发送一个警报,说明该值与默认值不同,否则如果def为0,checked为false,它不应该做任何事情。我正在学习javascript,这是迄今为止我在JSFIDLE中所学的内容:

这是我的HTML复选框:

<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');  
}