从下拉列表中选择值,如果所选值等于某个值,我希望下拉列表更改为只读,我该怎么做?
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");
}
});
});
答案 0 :(得分:11)
您需要将x
与"opel"
字符串进行比较,然后您可以使用属性disabled
,请参阅此处的小提琴:http://jsfiddle.net/xKQUd/3/
澄清:select
元素无法设置为readOnly
,需要使用disabled
属性
要解决不发送到服务器的问题,请设置隐藏输入等于将在表单提交时发送的禁用值,请在此处查看此小提示:http://jsfiddle.net/xKQUd/25/
答案 1 :(得分:2)
在您的代码中,您使用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";
。
答案 2 :(得分:1)
Select
没有attr 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);
}
});
});
btw open
不是变量,而是值,因此需要在引号"opel"
中
并且小提琴:http://jsfiddle.net/xKQUd/5/
答案 3 :(得分:1)
Select
个元素无法设置为readonly
,但可以为disabled
。但在这种情况下,他们的价值不会与form
一起提交。
这里有两个选择。
一种是使用所选值设置hidden input
,然后停用select
:
$(document).ready(function () {
$("#s_id").on("change", function () {
if ($(this).val() === "opel") {
$("#myHiddenField").val($(this).val());
$(this).attr("disabled", "disabled");
}
});
});
另一个是删除select
中的所有其他选项,只留下所选的一个选项:
$(document).ready(function () {
$("#s_id").on("change", function () {
if ($(this).val() === "opel") {
$(this).children("option").each(function() {
if (this.value != "opel")
this.remove();
});
}
});
});
现在取决于你。
答案 4 :(得分:0)
答案 5 :(得分:0)
试试这个,
if (x == "opel") {
$(this).attr("disabled", "disabled");
}
答案 6 :(得分: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');
}
});
});
答案 7 :(得分: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();
}
});
});