当相对应的id被选取的时候,对另一标签施加或者移除disabled效果
比如非常普通的HTML如下
<select name="onename" id="onename" ">
<option>1option>
<option>2option>
<option id="dee">3option>
<option id="dee">4option>
select>
<select id="add" disabled=disabled>
<option>5option>
<option>6option>
<option>7option>
select>
<script>
$(document).ready(function() {
$("#onename").change(function() {
if ($(this).id == "dee") {
$("#add").removeAttr("disabled");
} else {
$("#add").attr("disabled", "disabled");
}
});
});
script>
是不是缺少了什么或者要添加新的标签,还有一个小问题,就是当进入页面时,从数据库里传递的数据即使是id="dee"为selected的时候,也需要先选取id不等于dee的option,然后再次回到id=dee的option之际时才会解除disabled效果
主要还是想请教这样写存在的问题,第二个问题没有被验证但是印象中好像不管disableed还是display none等等会出现这种问题?
非常感谢
用 prop设置property,attribute才是用attr,jQuery1.5以上做了区分,要注意这个,要不会出现不是自己要的控制,示例如下
<select name="onename" id="onename">
<option>1</option>
<option>2</option>
<!--id起规则一些,值为要控制的select id前缀-->
<option id="add1">3</option>
<option id="add2">4</option>
</select>
<!--加个后缀,不要和之前出现的id一样-->
<select id="add1-select" disabled>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
<!--加个后缀,不要和之前出现的id一样-->
<select id="add2-select" disabled>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
<script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function () {
var allIdSelector = $("#onename").find('option[id]').map(function () { return '#' + this.id +'-select'}).get().join(',');//所有包含id option的选择器
$("#onename").change(function () {
$(allIdSelector).prop('disabled', true);//先全部禁用要控制的select
//this对象为select,并不是选中的option,要获取id用通过selectedIndex属性(选择的option下标)获取option后再获取id
var optionId = this.options[this.selectedIndex].id;
if (optionId) {//选中option有id,再启用对应的select
$('#' + optionId +'-select').prop('disabled', false);//注意这里id加上-select
}
});
});
</script>
这段代码有一处错误,应该改为:
当进入页面时,从数据库里传递的数据即使是id="dee"为selected的时候,也需要先选取id不等于dee的option,然后再次回到id=dee的option之际时才会解除disabled效果,你可以使用trigger函数,在页面加载完成之后触发onchange事件,让它获得正确的状态
<select name="onename" id="onename" ">
<option id=" 123">1</option>
<option>2</option>
<option value="dee">3</option>
<option value="dee">4</option>
</select>
<select id="add" disabled=disabled>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
$(document).ready(function() {
$("#onename").change(function() {
if ($(this).val() == "dee") {
$("#add").removeAttr("disabled");
} else {
$("#add").attr("disabled", "disabled");
}
});
});
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!