iCheck framework を使用していて、2つの入力があります
<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フレームワークから見えないものはありますか?解決策はありますか?
実際にiCheck
の場合Jqueryの変更を反映するには、iCheck
を更新する必要があります。
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')
を使用する必要はありません
jQuery iCheckの動作は、予想とは少し異なります。
チェックボックスまたはラジオボタンを初期化すると、コントロールのステータス/値を取得し、その状態のルックアンドフィールを構築します。以上です。次に、コントロールの値や属性の更新をチェックしません。
したがって、Ajax失敗イベントでチェックボックスをオフにする唯一の方法は、プラグインによって公開された関数を使用することです。
Ajax failイベントで以下を使用して、状態を以前の状態に戻す必要があります
$(this).iCheck('toggle');
または、html属性を変更して、以下のようにコントロールを更新できます
$(this).removeAttr('checked');
currentChecked.prop('checked', true);
$(this).iCheck('update'); — apply input changes, which were done outside the plugin
以下の解決策は、iCheck v1.0.2で私に役立ちました。以下のようにラジオボタングループをフィルタリングすることで、iCheckラジオをチェックできます。
要素の 'id'を使用
$('input:radio[name="group"]').filter('[id="id1"]').iCheck('check');
'value'を使用
$('input:radio[name="group"]').filter('[value="id1"]').iCheck('check');
要件/機能に基づいて、「id」または「value」を動的に置き換えることができます。 。iCheck( 'check')内で 'check'または 'uncheck'を変更できます。
//this will update all iCheck fields inside the selected form
$('#form_id :radio').iCheck('update');