2

2 つの選択があり、2 番目の選択の値に基づいて、最初の値を削除したいと考えています。例: 2 番目の選択から値 1 と 2 を選択すると、値 2、3、4、5 が非表示になり、2 番目の選択値が 3 の場合、値 1、2、3 が非表示になります。

選択 1:

<select name="select1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

選択 2:

<select name="select2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

これは、1 または 2 が選択された場合に非表示にするためのコードです。

var ary=[2,3,4,5];
$('[name=select1] option').filter(function(){
return ($.inArray(parseInt(this.value),ary) >-1);}).hide();

このコードは非表示に機能しますが、問題があります。コードが値 1 と 2 で 2,3,4,5 を非表示にすると、2 番目の選択で値 3 を選択すると、他の値が非表示になるため、値 1 のみが表示されます。show() を使用してこれを解決しました。そして、2,3,4,5 が表示されますが、値 1 を非表示にすることはできません。

var ary=[4,5];
var ary2=[1];
$('[name=select1] option').filter(function(){
return ($.inArray(parseInt(this.value),ary) >-1);}).hide()&&($.inArray(parseInt(this.value),arry2) >-1);}).show();

また、常に select1 を更新してすべての値を表示する別の関数を呼び出そうとしましたが、この関数では非表示のみを使用するのが正しい方法だと思いますが、解決方法がわかりませんか?

4

1 に答える 1