0

こんにちは、2 つの選択フィールドがあります。ユーザーがオプション値 1 または 2 を選択した場合は最初に選択フィールドで、次に 2 番目の選択フィールドですべてのオプションが表示されますが、最初にオプション 2 を選択すると、次にオプション 2 が選択 ID から削除されます。以下は私のコードです:

<script type="text/javascript">
 var index3,str;
</script>

<select id="first"  onchange="chk();">
<option value = "one">one</option>    
<option value = "two">two</option>    
<option value = "three">three</option>    
</select>

<select id="second">
<option value = "one">one</option>    
<option value = "two">two</option>    
<option value = "three">three</option>     
</select>


<script type="text/javascript">
function chk()
{
    index3 = document.getElementById("first");
    str= index3.options[index3.selectedIndex].value;

    alert("str:"+str);

    if (str=="two")
    {
          $("#second option[value='two']").remove();
    }

    else
    {
          if ( $("#second  option[value='two']").length == 0 )
         {

             $("#second").append('<option value="two">two</option>');
         }
    }
}
</script>

フィドルではここで問題なく動作しますが、モバイルの問題は次のとおりです。2番目の選択IDからオプション2を選択し、最初の選択IDでオプション値2を選択すると、2番目をクリックすると、2番目の選択IDにもオプション2が表示されますidを選択すると、それだけが削除されます。しかし、jsFiddle では完璧に動作します。どんな提案でも大歓迎です、前もって感謝します。

ここに画像の説明を入力

ここに画像の説明を入力

4

3 に答える 3

1

ここで私は上記の問題のために完全なビンを作りました。デモリンクをご覧ください。

デモ http://codebins.com/bin/4ldqp7p

HTML

<select id="first">
  <option value = "one">
    one
  </option>

  <option value = "two">
    two
  </option>

  <option value = "three">
    three
  </option>

</select>

<select id="second">
  <option value = "one">
    one
  </option>

  <option value = "two">
    two
  </option>

  <option value = "three">
    three
  </option>

</select>

jQuery

$(function() {

    $("#first").change(function() {
        var optVal = $(this).val().trim();

        if (optVal == "two") {

            $("#second").find("option[value=" + optVal + "]").remove();
        } else {
            if ($("#second").find("option[value=two]").length <= 0) {

                $("<option value=\"two\">two</option>").insertAfter($("#second").find("option[value='one']"));

            }
        }
    });

});

デモ http://codebins.com/bin/4ldqp7p

于 2012-09-05T07:30:00.423 に答える
0

この編集を確認してください

$('#first').change(function() {
      $("#second option[value='" + $(this).val() + "']").remove();
});
于 2012-09-05T04:51:20.830 に答える
0

あなたのコードは全体的に少し奇妙に見えます。「first」で選択されている場合に「second」からアイテムを削除することを意図している場合は、次の更新を試してください: http://jsfiddle.net/NWbXt/58/

$(function() {
    var first = $('#first'),
        second = $('#second'),
        removed;

    first.change(function() {
        var selected = first.val();
        second.append(removed);  //.. add back old option
        removed = second.find('option[value="' + first.val() + '"]').remove();        
    }).trigger('change');
});​
于 2012-09-05T04:52:48.240 に答える