web-dev-qa-db-ja.com

iCheckおよびチェックボックスを手動で設定してチェック済み

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フレームワークから見えないものはありますか?解決策はありますか?

9
mat_boy

実際にiCheckの場合Jqueryの変更を反映するには、iCheckを更新する必要があります。

iCheck('update')を使用して更新できます

_$(this).iCheck('update');
_

Jqueryを使用してラジオボタンをオンまたはオフにした後。

別のソリューションは、定義済みの関数を使用してcheckまたはuncheckiCheckのみです。

_<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')を使用する必要はありません

14
Binayak Das

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
2
David Chelliah

以下の解決策は、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'を変更できます。

1
Ishara Madawa
//this will update all iCheck fields inside the selected form
$('#form_id :radio').iCheck('update');
0
Pran