这是非常标准的东西,我无法理解它为什么不起作用。 当调用启用功能时,我会收到警报,但仍然禁用了选择字段。有什么想法吗?
$(window.document).ready(function() {
$('#selectmenu1').attr('disabled','true');
$('#selectmenu2').attr('disabled','true');
$('#selectmenu3').attr('disabled','true');
});
function enableCoreChange(){
alert('called');
$('#selectmenu1').attr('disabled','false');
$('#selectmenu2').attr('disabled','false');
$('#selectmenu3').attr('disabled','false');
}
点击事件:
<a href="#" onclick="enableCoreChange();">Click here to enable</a>
这让我发疯了!
答案 0 :(得分:2)
传递布尔值而不是字符串作为.attr()
的第二个参数。
$(function() { // use document ready shorthand
// combine the selectors to stay DRY
$('#selectmenu1, #selectmenu2, #selectmenu3').attr('disabled', true);
});
function enableCoreChange() {
$('#selectmenu1, #selectmenu2, #selectmenu3').attr('disabled', false);
// alternately:
$('#selectmenu1, #selectmenu2, #selectmenu3').removeAttr('disabled');
}
另请注意其他一般风格改进。
答案 1 :(得分:2)
<子> HTML:子>
<a href="#" id="enable">Click here to enable</a>
<子> jQuery的:子>
function enableCoreChange(){
$('#selectmenu1, #selectmenu2, #selectmenu3').prop('disabled', false);
}
$(document).ready(function(){
$('#selectmenu1, #selectmenu2, #selectmenu3').prop('disabled', true);
$('#enable').on('click',function(e){
e.preventDefault();
enableCoreChange();
});
});
的 demo jsFiddle 强> 的
<子>注意:子>
而不是$('#selectmenu1, #selectmenu2, #selectmenu3')
:以 ^
选择器开始:
$('select[id^="selectmenu"]').prop('disabled', false);
答案 2 :(得分:1)
属性“disabled”不需要值(向后兼容性),只要此属性可用,就会被禁用。
要再次激活它,请使用此功能:
function enableCoreChange(){
alert('called');
$('#selectmenu1').removeAttr('disabled');
$('#selectmenu2').removeAttr('disabled');
$('#selectmenu3').removeAttr('disabled');
}
答案 3 :(得分:1)
您应该使用.prop()
代替.attr()
答案 4 :(得分:0)
这里的问题是你指定字符串'false'
而不是布尔false
。就个人而言,为了清晰起见,我会使用removeAttr
function enableCoreChange(){
alert('called');
$('#selectmenu1').removeAttr('disabled');
$('#selectmenu2').removeAttr('disabled');
$('#selectmenu3').removeAttr('disabled');
}