読み取り専用の「選択」要素を選択不可にしたいのですが、これは読み取り専用の入力ボックスと同じ動作です。
以下のコードでは、値「abc」を持つ入力ボックスの値を変更できません。ただし、ドロップで選択を変更することはできます。これらの値をサーバーに送信する必要があるため、「disabled」属性を使用できません。
<input type="text" readonly="readonly" value="abc">
</input>
<select readonly="readonly">
<option>Item ABC</option>
<option>Item XYZ</option>
</select>
これを解決する簡単な方法は、次の行を使用することです。
$("#MySelect").css("pointer-events","none");
しかし、私の場合はSelectに無効化されたカーソルを残しておく必要があり、「ポインタイベント」を「なし」に設定するとカーソルが「許可されていません」として表示されなくなりました。
JQUERY
var isReadOnly = $("#MyCheckbox").prop("checked");
var domElements = $("#MyInput, #MySelect");
$(domElements).prop("readonly", isReadOnly);
$(domElements).toggleClass("my-read-only-class", isReadOnly);
$(domElements).find("option").prop("hidden", isReadOnly);
CSS
.my-read-only-class
{
cursor: not-allowed;
}
JSFiddle https://jsfiddle.net/xdddzupm/
$("select :selected").each(function(){
$(this).parent().data("default", this);
});
$("select").change(function(e) {
$($(this).data("default")).prop("selected", true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select disabled>
<option value="foo1">foo1</option>
<option value="bar1" selected="selected">bar1</option>
<option value="test1">test1</option>
</select>
Try below code
<select>
<option value="foo1">foo1</option>
<option value="bar1" selected="selected">bar1</option>
<option value="test1">test1</option>
</select>
disabled
属性を使用して読み取り専用にする必要があります。
<select disabled>
<option>Item ABC</option>
<option>Item XYZ</option>
</select>