问问题
21889 次
4 回答
9
看起来你快到了。只是几个语法错误。
$("#worldcb").click(function(){
var el = $("#worldSelect");
if (el){
el.removeAttr("disabled");
if (this.checked){
el.attr("disabled", "disabled");
}
}
});
这是一个jsFiddle来演示。
至于页面回发时保持禁用状态,只需要在页面加载时运行一些逻辑即可。
if ($("#worldcb").is(":checked")){
$("#worldSelect").attr("disabled", "disabled");
}
于 2012-05-09T22:00:46.553 回答
1
好吧,您需要在加载时同步两者。还要更改toggleSelection,使其既可以作为事件处理程序调用,也可以独立运行
function toggleSelection( element, scope ){
scope = scope || this;
if (scope.checked) {
$(element.data).attr('disabled', 'disabled');
} else {
$(element.data).removeAttr('disabled');
}
}
$(function() {
$('#worldcb').click('#worldSelect', toggleSelection);
toggleSelection( { data : '#worldSelect' }, document.querySelector( '#worldcb' ) );
});
于 2012-05-09T22:12:55.063 回答
1
最简单的方法是将您的 toggleFunction 分配给文档就绪,因此每次页面加载时都会检查复选框状态,并正确显示选择。您可以将 autocomplete="off" 属性赋予特定的表单字段,使其不缓存(因此该复选框将在页面刷新后关闭)。
例子:
$(document).ready(function() {
toggleSelection('#worldcb');
});
于 2012-05-09T22:01:15.083 回答
0
如果您总是希望在页面加载时禁用它,只需将 disabled 属性添加到 select html 元素。
<select id="worldSelect" class="select" name="world" disabled></select>
于 2012-05-09T22:00:57.290 回答