4

他の選択で正確なオプションが選択されている場合に、選択で複数のオプションを無効にする方法。このリンクで私のものと同様の問題に対する回答済みの質問を見つけました: http://jsfiddle.net/dZqEu/

jQuery コードは次のようになります。

$(this).siblings('select').children('option').each(function() {
    if ( $(this).val() === value ) {
        $(this).attr('disabled', true).siblings().removeAttr('disabled');   
    }

問題は、これが 2 つの選択に対してのみ機能することです。選択で同じ値が選択される可能性を無効にする合計 3 つの選択が必要です。

このコードは 3 つの選択では機能しません: http://jsfiddle.net/dZqEu/968/

事前にTnx

ノート:

select1 が 1 に設定され、select 2 が 2 に設定されている場合、select3 の値 1 と 2 を無効にすることはできません。選択3の値2のみを無効にします...

4

5 に答える 5

7

これを試してください:- http://jsfiddle.net/Z2yaG/

フォーカスを使用して前の値を取得し、無効なものを削除します。あなたのhtmlでは、デフォルトオプションに値-1を追加しました。

<option value="-1">No Match</option>

     var prev = -1;
$("select").change(function () {
    if ($(this).val() > -1) {
        $("select").not(this).find("option[value=" + $(this).val() + "]").attr('disabled', 'disabled');
    }
    $("select").not(this).find("option[value=" + previous + "]").removeAttr('disabled');
}).focus(function () {
    previous = $(this).val();
});
于 2013-04-25T17:03:33.683 に答える
2

これはうまくいくようです:http://jsfiddle.net/QLn9b/1/

元のコードを使用しています:

$("select").change(function() {   
    $("select").not(this).find("option[value="+ $(this).val() + "]").attr('disabled', true);
});
于 2013-04-25T16:54:20.597 に答える
1

これがあなたが探しているものだと思います。

$('select').change(function() {

  var select_elements = $('select')
  $.each(select_elements, function(i,elem){
    var sel_values = [];

    // Selecting and Iterating on Sibling Selects        
    var siblis = $(elem).siblings('select')
    $.each(siblis, function(i, sibli){
        if($(sibli).val()!='No Match'){
            sel_values.push($(sibli).val());
        }
    });

    // Iterating on Options of Select
    $(this).children('option').each(function() {
        $(this).removeAttr('disabled');

        if($.inArray($(this).val(), sel_values) !== -1){
            $(this).attr('disabled', true);
        }
    });        

  });    
});

すべての選択に 1 ~ 6 の値がある場合、

If select1 value      --> 1,
and select2 value     --> 3 (1 is disabled)
then in select3 value --> 5 (1,3 are disabled)

select3を選択した後、

In select1  --> 1 (3,5 disabled)
In select2  --> 3 (1,5 disabled)
In select3  --> 5 (1,3 disabled)

これがjsfiddleです:http://jsfiddle.net/prem_nagalla1/rY4n3/

それが役に立てば幸い :)

于 2013-04-25T18:02:27.950 に答える
0

これを試して。

$('select').change(function() 
{    
    var value = $(this).val();
    $('option').removeAttr("disabled");
    $('select').each(function ()
    {
        $("option[value=" + $(this).val() + "]").attr("disabled","disabled");
    });
});
于 2013-04-25T17:04:42.837 に答える