我使用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框架中看不到的东西?任何解决方案?
答案 0 :(得分:11)
实际上在iCheck
的情况下您需要更新iCheck
以反映Jquery上的更改。
您可以使用iCheck('update')
$(this).iCheck('update');
使用jquery选中或取消选中单选按钮。
使用其预定义功能check
或uncheck
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