2016-11-18 5 views
0

現在の選択と一致する他の選択された値があるかどうかチェックします。したがって、.payment-methodが変更された場合は、値を取得し、値として.payment-methodを確認してください。私は変更を引き起こしたドロップダウンを除外したい。 .not(this)が機能していません。あなたはselect参照thisoption要素に対するnot()を使用しているので、イベントをトリガーしているものを除くすべてのドロップダウンから選択した値を取得

$(document).on('change', '.payment-method', function() { 
    var thisVal = $(this).val(); 
    console.log("this value" + thisVal); 

    $(".payment-method option:selected").not(this).each(function() { 
     console.log($(this).val()); 
    }); 
}); 

答えて

0

問題は、したがって、それは常に偽だ、です。この問題を解決するには、.payment-method要素を含むセレクタをnot()を呼び出した後、このように、選択したオプションを取得するためにfind()を使用します。

$(document).on('change', '.payment-method', function() { 
 
    $('.payment-method').not(this).find('option:selected').each(function() { 
 
    console.log($(this).val()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<select class="payment-method"> 
 
    <option value="foo">Foo</option> 
 
    <option value="bar">Bar</option> 
 
    <option value="fizz">Fizz</option> 
 
    <option value="buzz">Buzz</option> 
 
</select> 
 
<select class="payment-method"> 
 
    <option value="foo">Foo</option> 
 
    <option value="bar">Bar</option> 
 
    <option value="fizz">Fizz</option> 
 
    <option value="buzz">Buzz</option> 
 
</select> 
 
<select class="payment-method"> 
 
    <option value="foo">Foo</option> 
 
    <option value="bar">Bar</option> 
 
    <option value="fizz">Fizz</option> 
 
    <option value="buzz">Buzz</option> 
 
</select>

1

はだまされやすい人の値をチェックするには、あなたがそれをフィルタリングすることができ、例えば:

$(document).on('change', '.payment-method', function() { 

    var thisVal = $(this).val(); 
    console.log("this value" + thisVal); 

    var anyDupeVal = !!$(".payment-method").not(this).filter(function() { 
    return this.value === thisVal 
    }).length; 

    console.log(anyDupeVal); // true or false 

}); 

そして、あなたのタイトルがそれを示唆するように、あなたが他のすべての値をしたい場合は、値の配列を得るためにそれをマップすることができます:

しかし、imhoでは、あなたが結果として期待していることは本当に明確ではありません。

関連する問題