0

値の配列が与えられた場合、コードでその値に関連するすべての要素 (チェックボックス) を無効にし、以前にチェックされていた無効になっているもののチェックを外します。もともと私のコードはそれらを無効にし、チェックを外しませんでした:

function allow(j, extended){
    $('[id^="'+j+'_extended_"]').attr('disabled', 'disabled');
    for (var k = 0; k < extended.length; k++) {
        $("#"+j+"_extended_"+extended[k]).attr("disabled", ""); //IE
        $("#"+j+"_extended_"+extended[k]).removeAttr('disabled'); //Other Browers
    }
}

ただし、これは最初にすべての要素を無効にし、次に許可された要素を再度有効にします。これは、新しいものをチェックするべきではなく、許可されなくなったもののチェックを外すだけであるため、チェック/チェック解除には機能しません。最後に無効になっているもののチェックを外し、他のチェック/チェックを外したままにする最良の方法は何でしょうか?

お時間をいただきありがとうございます!

4

2 に答える 2

1

オブジェクトの小道具を変更するには、jquery でこのメソッドを使用します

$("#checkboxname").prop("checked","")// to uncheck
$("#checkboxname").prop("checked","checked")// to check

そしてあなたのコードで

$("#"+j+"_extended_"+extended[k]).prop("checked", "");

役立つことを願っています

于 2012-05-21T15:21:02.380 に答える
0

有効のままにする要素の配列を渡す代わりに、無効にする要素の配列を渡しました。そうすれば、それらもチェックを外すように明示的に言うことができます。結果のコードは次のようになりました。

function disallow(j, extended){
    //First, allow all.
    $('[id^="'+j+'_extended_"]').attr("disabled", ""); //IE
    $('[id^="'+j+'_extended_"]').removeAttr('disabled'); //Other Browers
    //Then remove any that are not allowed.
    for (var k = 0; k < extended.length; k++) {
        $("#"+j+"_extended_"+extended[k]).attr('disabled', 'disabled');
        $("#"+j+"_extended_"+extended[k]).attr("checked", ""); //IE
        $("#"+j+"_extended_"+extended[k]).removeAttr('checked'); //Other Browers
    }
}

返信に時間を割いてくださった方々、ありがとうございました。

于 2012-05-22T00:06:34.870 に答える