0

select-optionsが長くなると、次のスクリプトで問題が発生しました。

オプションが少ないソリューションhttp://jsfiddle.net/hsQjh/5/

問題のある長いオプション:http://jsfiddle.net/hsQjh/6/

私の最初の選択ボックスオプションは最大40以上のオプションであるため、2番目の選択ボックスも最大40以上のoptgroupになります。最初のボックスでオプション「2」を選択すると、2番目のボックスにすべてのoptgroupが入力されます。 2で始まる番号、つまりoptgroup ' 2 '、 ' 20 '-' 29 'が入力されますが、選択された他のオプションにも同じことが起こります。

オプションの値とoptgroupのラベルの間の「ID」と正確に一致する可能性がありますか?

function filterActivity(e){
     var ids = $('#filterActivity + div input:checked').map(function(i) {
        return $(this).val().replace(/ .*/, '');
     }).get(); // Retrieve checked IDs

     $('#filterSubActivity + div div label').each(function() { // Show matching options
        $(this).toggle($.inArray($('input', this).val()[0], ids) > -1);
     });

     $('#filterSubActivity + div label.optGroup').each(function() { // Show matching groups
        $(this).toggle($(this).next().find('label:visible').length > 0);
     });
}

ありがとう。

4

1 に答える 1

1

正規表現ベースのフィルターを使用する

$('#filterSubActivity + div div label').each(function() { // Show matching options
    $(this).toggle($.inArray($('input', this).val().match(/^\d+/)[0], ids) > -1);
});

デモ:フィドル

于 2013-03-26T03:56:33.140 に答える