iCheck并手动设置复选框以检查

时间:2016-04-29 15:43:57

标签: javascript jquery icheck

我使用iCheck framework并且我有两个输入

<input name="group" id="id1" type="radio" checked>
<input name="group" id="id2" type="radio">
<input name="group" id="id3" type="radio">
<input name="group" id="id4" type="radio">

点击我调用ajax函数。如果某些内容失败,我想将checked属性设置为先前选择的输入。

var currentChecked = $("input[name='group']:radio:checked");

$("input[name='group']:radio").each(function() {
        $(this).on('ifChecked', function(){
               $.ajax({
                    url: "/ajax/something/"
                })
                .done(function (data) {
                    currentChecked = $(this);
                })
                .fail(function (data) {
                    $(this).removeAttr('checked');
                    currentChecked.prop('checked', true);
                });
 });
});

但这不会重置已选中的复选框。有什么我从iCheck框架中看不到的东西?任何解决方案?

4 个答案:

答案 0 :(得分:11)

实际上在iCheck的情况下您需要更新iCheck以反映Jquery上的更改。

您可以使用iCheck('update')

进行更新
$(this).iCheck('update');

使用jquery选中或取消选中单选按钮。

使用其预定义功能checkuncheck iCheck的另一种解决方案。

<input name="group" id="id1" type="radio" checked>

如果以上是您的单选按钮,您可以使用jquery部分中的代码,如下所示

$('#id1').iCheck('uncheck'); //To uncheck the radio button
$('#id1').iCheck('check'); //To check the radio button

在这种情况下,无需使用iCheck('update')

答案 1 :(得分:2)

jQuery iCheck与你期望的方式有点不同。

初始化复选框或单选按钮时,它会获取控件的状态/值并构建该状态的外观。就这些。然后它永远不会检查您的控制值或其属性的任何更新。

因此,在Ajax失败事件中取消选中复选框的唯一方法是使用插件公开的函数。

您应该在ajax失败事件中使用以下内容将状态更改回上一个

$(this).iCheck('toggle');

或者您可以更改html属性并刷新控件,如下所示

$(this).removeAttr('checked');
currentChecked.prop('checked', true);
$(this).iCheck('update'); — apply input changes, which were done outside the plugin

答案 2 :(得分:1)

以下解决方案在iCheck v1.0.2中对我有用。 您可以通过过滤如下所示的单选按钮组来检查 iCheck 单选

使用元素的“ id”

$('input:radio[name="group"]').filter('[id="id1"]').iCheck('check');

使用“值”

$('input:radio[name="group"]').filter('[value="id1"]').iCheck('check');

您可以根据自己的要求/功能动态替换“ id”或“ value”。 并且您可以在 .iCheck('check')中更改'check'或'uncheck'。

答案 3 :(得分:0)

marquee