选中/取消选中 - ifChecked无效

3

更新:我正在使用以下插件

我正在尝试检查复选框是否在用户刷新或重新加载页面时被选中,这是我使用的代码,但我已经调试了它,它从未执行第二个IF条件。

$('input').on('ifChecked', function (event) {
    if ($("input#CreatePart").is(':checked')) {
        alert('checked');
    }
});

$('input').on('ifUnchecked', function (event) {
    if ($("input#CreatePart").is(':checked')) {
        alert('un-checked');
    }
});

<input checked="checked" class="icheck" data-val="true" 
  data-val-required="The Create new Part field is required." 
  id="CreatePart" name="CreatePart" type="checkbox" value="true" 
/>
<input name="CreatePart" type="hidden" value="false" />

你意识到页面刷新后复选框的值丢失了吗? - madalinivascu
没有,我没有意识到那个问题。但是我使用的插件在我刷新页面时,我看到复选框被选中了。 - Nick Kahn
这是您的按钮默认状态吗? - madalinivascu
不,这不是默认值,是用户选择的(已选或未选)。 - Nick Kahn
您的页面无法保存用户复选框的状态。您的页面可能会被浏览器缓存,这就是为什么您看到它们已保存的原因。 - madalinivascu
4个回答

4

请尝试:

在页面加载时:

 alert($('input').is(':checked'));

http://jsfiddle.net/9ypwjvt4/18/

否则使用:

   $(document).ready(function () {
    $('input').iCheck({
        checkboxClass: 'icheckbox_square-orange',
        radioClass: 'iradio_square-orange',
        increaseArea: '20%' // optional
    });

    $('input').on('ifChecked', function(event){
      alert('Checked');
    });

    $('input').on('ifUnchecked', function(event){
      alert('unchecked');
    });
});

jsfiddle: http://jsfiddle.net/9ypwjvt4/17/


第一段代码显然不起作用,第二段代码请再次阅读我的问题,如果您不理解,请让我知道。 - Nick Kahn
当我勾选并刷新页面时,我会得到“警告为真”,但是当我取消勾选并刷新页面时,我仍然得到“警告为真”,并且复选框仍然被勾选... - Nick Kahn
你的页面没有保存复选框的状态,你需要在数据库或本地存储/cookie中保存复选框的状态。 - madalinivascu

0

在编程中,使用change事件而不是ifChecked或ifUnchecked。

$('input.icheck').on('change', function (event) {
    if ($("input#CreatePart").is(':checked')) {
        alert('checked');
    }else{
       alert("unchecked");
    }

});

@AbuHamzah,请问控制台中是否有任何错误,同时请使用$('input.icheck')查看它是否可以正常工作,因为有两个输入字段。 - Nakib
我没有收到任何错误信息,但它没有执行 if 条件,即 if ($("input#CreatePart"),也没有进入 else 条件。 - Nick Kahn

0

将ifUnchecked中的条件更改为确保复选框未被选中而不是已被选中。

您正在检查复选框是否已被选中,而此时触发了未选中事件,这是不可能发生的。

$('input').on('ifUnchecked', function (event) {
    if ($("input#CreatePart").not(':checked')) {
        alert('un-checked');
    }
});

演示:

http://jsfiddle.net/ejLbgt7b/


0
在我的情况下,“ifChecked”事件也没有触发,但是后来我注意到我在代码的不同位置两次初始化了iCheck。
$('input').iCheck();
// and later in the code:
$('input').iCheck();

移除冗余的初始化有所帮助,'ifChecked' 开始起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接