jquery / javascript启用和禁用选择菜单。我究竟做错了什么?

时间:2012-04-06 20:30:43

标签: javascript jquery

这是非常标准的东西,我无法理解它为什么不起作用。 当调用启用功能时,我会收到警报,但仍然禁用了选择字段。有什么想法吗?

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

这让我发疯了!

5 个答案:

答案 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()

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

答案 4 :(得分:0)

这里的问题是你指定字符串'false'而不是布尔false。就个人而言,为了清晰起见,我会使用removeAttr

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

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