ドロップダウンから値を選択するときに、選択した値が特定の値と等しい場合、ドロップダウンを読み取り専用に変更したいのですが、どうすればよいですか?
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");
}
});
});
x
を"opel"
の文字列と比較する必要があり、属性disabled
を使用できます。ここでフィドルを参照してください: http://jsfiddle.net/xKQUd/ 3 /
明確にするため:select
要素はreadOnly
に設定できません。disabled
属性を使用する必要があります
サーバーに送信されない問題を回避するには、代わりにフォーム送信時に送信される無効な値に等しい非表示の入力を設定します。ここでこのフィドルを表示します: http://jsfiddle.net/xKQUd/25/
コードでは、opel
をvariable
として使用しました。しかし、それはvariable
ではなく、string
です。したがって、(一重または二重引用符で囲まれた)文字列として受け取る必要があります。
$(document).ready(function () {
$("#s_id").change(function () {
var x = $(this).val();
alert($(this).val());
alert("x=======" +x);
if (x == "opel") {
alert("iff");
$(this).attr("disabled", "disabled");
}
});
});
または変数var opel = "opel";
を取ります。
Select
にはattrReadOnly
がありません-代わりに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);
}
});
});
btw open
は変数ではなく値なので、引用符で囲む必要があります"opel"
とフィドル: http://jsfiddle.net/xKQUd/5/
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();
});
}
});
});
それはあなた次第です。
以下のコードをお試しください:
<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/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();
}
});
});
これを試して、
if (x == "opel") {
$(this).attr("disabled", "disabled");
}