0

这是非常标准的东西,我不明白为什么它不起作用。调用启用函数时,我收到警报,但选择字段仍处于禁用状态。有什么想法吗?

$(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>

这让我疯狂!

4

5 回答 5

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');
}

还要注意其他一般样式改进。

于 2012-04-06T20:32:47.893 回答
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();
    });    

});

演示 jsFiddle

注意:
而不是$('#selectmenu1, #selectmenu2, #selectmenu3'): ^选择器开头:

$('select[id^="selectmenu"]').prop('disabled', false); 
于 2012-04-06T20:47:18.167 回答
1

属性“禁用”不需要值(向后兼容性),只要该属性可用,它就会被禁用。

要再次激活它,请使用此功能:

function enableCoreChange(){
    alert('called');
    $('#selectmenu1').removeAttr('disabled');
    $('#selectmenu2').removeAttr('disabled');
    $('#selectmenu3').removeAttr('disabled');
}
于 2012-04-06T20:33:40.967 回答
1

你应该使用.prop()而不是.attr()

http://api.jquery.com/prop/

于 2012-04-06T20:35:04.600 回答
0

这里的问题是您指定的是 string'false'而不是 boolean falseremoveAttr为了清楚起见,我个人会使用

function enableCoreChange(){
    alert('called');
    $('#selectmenu1').removeAttr('disabled');
    $('#selectmenu2').removeAttr('disabled');
    $('#selectmenu3').removeAttr('disabled');
}

小提琴:http: //jsfiddle.net/6pznn/

于 2012-04-06T20:35:34.290 回答