0

ユーザーがリストのコースで使用するアイテムのx量を選択できる動的予約ページがあります。

例: 1 人あたり 3 つのチェックボックスがコースにリストされている場合がありますが、制限は 2 です。2 つに達すると、その人の残りの 1 つのチェックボックスは無効になります。

私が現在持っているソリューションは、Firefox と Chrome では完全に機能しますが、Internet Explorer では機能しません。

私のコードの理由を説明するには:

個人とコースの項目は動的であるため、後で PHP で選択を処理するために、各チェックボックスには動的な名前が付けられます。

各アイテムにIDがあり、各人にIDがある場合、チェックボックスの名前は[userid_itemid]に基づいています

チェックボックス名は、3 人のユーザーが
ユーザー 1-(1_1)、(1_2)、(1_3) のページで選択を行っている場合
、ユーザー 2-(2_1)、(2_2)、のようなパターンに従います。 (2_3)
ユーザー用 3-(3_1)、(3_2)、(3_3)

これは、Firefox と Chrome でチェックボックスを正しく無効にするコードです。

$(document).ready(function(){  
    $("input:checkbox").click(function() {
        var chktest="input\\["+$(this).attr('id');
        var bol = $("input[name^="+chktest+"_]:checked").length >= 2;
        $("input[name^="+chktest+"_]").not(":checked").attr("disabled",bol);
    });   
});

ただし、Internet Explorer (間違いなくバージョン 8) では、チェックボックスの形状や形式が制限されていません。

上記の私のコードはこれに基づいていました:

Limit Checkbox amount ANSWER 19 動作中のデモを示しています。

そこに提供されているデモではクロスブラウザーで動作しますが、データが動的であるため、コードがより複雑になり、問題が発生したと考えられます。

4

1 に答える 1

0

オプション1

しばらく前に、共有したいと思っていた、何年にもわたって書いたいくつかのカスタム JQuery セレクターをブログに書きました。役に立つと思われる正規表現で選択するためのものがあります。

... 少なくとも、必要に応じて独自のセレクターを作成するための良い出発点です。 github のコードは次のとおりです。あなたが使うと思うものは:attrregex

オプション 2

それ以外の別のオプションは、名前に含まれているものの各側面についてクラスにカスタム属性を配置することです(それを制御できると仮定します):

<input type="checkbox" name="user_1-1" data-user="1"/>
<input type="checkbox" name="user_1-2" data-user="1"/>
<input type="checkbox" name="user_1-3" data-user="1"/>
<input type="checkbox" name="user_2-1" data-user="2"/>
<input type="checkbox" name="user_2-2" data-user="2"/>
<input type="checkbox" name="user_2-3" data-user="2"/>

次に、選択するだけで、$('input[data-user=' + userId + ']')または何を持っているかを選択できます。

そこに何か役立つことを願っています。

于 2012-10-31T15:17:18.543 に答える