6

ドロップダウンから値を選択する際、選択した値が特定の値に等しい場合、ドロップダウンを読み取り専用に変更したいのですが、どうすればよいですか?

HTML:

<select id="s_id">
   <option value="volvo">Volvo</option>
   <option value="saab">Saab</option>
   <option value="opel">Opel</option>
   <option value="audi">Audi</option></select>

脚本:

$(document).ready(function () {
   $("#s_id").change(function () {
     var x = $(this).val();
     //alert("something's changed");
     alert($(this).val());
     if (x === opel) {
         alert("iff only.....");
         $(this).attr("readOnly", "true");
    }
   });
});

フィドル: http://jsfiddle.net/L4reds/xKQUd/2/

4

8 に答える 8

13

xの文字列と比較する必要があり"opel"、属性を使用できますdisabled。ここでフィドルを参照してください: http://jsfiddle.net/xKQUd/3/

明確にするために:select要素を に設定することはできません。属性readOnlyを使用する必要がありますdisabled

サーバーに送信されない問題を回避するには、代わりにフォーム送信時に送信される無効な値に等しい非表示の入力を設定します

于 2013-07-26T12:16:46.340 に答える
1

Selectattr がありませんReadOnly- 代わりにdisabled 、あなたのコードである可能性があります:

$(document).ready(function () {
    $("#s_id").change(function () {
        var x = $(this).val();
        //alert("something's changed");
        alert($(this).val());
        alert("x=======" +x);
        if (x == "opel") {
            alert("iff");
           // $(this).attr("readOnly", "true");
            $(this).attr('disabled',true);
        }
    });
});

ところでopen、変数ではなく値なので、引用符"opel" とフィドルで囲む必要があります: http://jsfiddle.net/xKQUd/5/

于 2013-07-26T12:18:29.403 に答える
1

Select要素は設定できませんがreadonly、代わりに設定できますdisabled。ただし、この場合、それらの値はform.

ここには 2 つのオプションがあります。

1 つは、選択した値で を設定しhidden input、次に を無効にすることselectです。

$(document).ready(function () {
   $("#s_id").on("change", function () {
       if ($(this).val() === "opel") {
           $("#myHiddenField").val($(this).val());
           $(this).attr("disabled", "disabled");
       }
   });
});

もう 1 つは、他のすべてのオプションを から削除し、選択したオプションselectのみを使用できるようにすることです。

$(document).ready(function () {
   $("#s_id").on("change", function () {
     if ($(this).val() === "opel") {
         $(this).children("option").each(function() {
            if (this.value != "opel")
               this.remove();
         });
     }
   });
});

それはあなた次第です。

于 2013-07-26T12:25:32.330 に答える
0

以下のコードを試してください:

<select id="s_id">
 <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
 <option value="opel">Opel</option>
 <option value="audi">Audi</option>
 </select>

Jquery コード:

$(document).ready(function () {
$("#s_id").change(function () {
 var x = $(this).val();    
 if (x == 'opel') {
     $(this).attr('disabled','disabled');
}
});
});

http://jsfiddle.net/Ea6NN/

于 2013-07-26T12:30:02.800 に答える
0

ここにいますhttp://jsfiddle.net/SteveRobertson/xKQUd/24/

      $(document).ready(function () {
          y=1;
          $("#s_id").change(function () {
             var x = $(this).val();
    //alert("something's changed");


             if (x == "opel" && x!=y) {           
                y=x;
                $("#s_id").prop("disabled", true).change();            
    }
});

});

于 2013-07-26T12:30:08.740 に答える
0

試す

if (x == 'opel') {
        alert("iff");
        $(this).attr("disabled", "true");
    }

フィドルデモ

于 2013-07-26T12:19:12.437 に答える