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

の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

属性「disabled」は、この属性が使用可能になるとすぐに値(下位互換性)を必要とせず、無効になります。

再度アクティブにするには、次の機能を使用します。

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

ここでの問題'false'は、 boolean の代わりに文字列を指定していることですfalse。個人的にはremoveAttr、明確にするために使用します

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

フィドル: http://jsfiddle.net/6pznn/

于 2012-04-06T20:35:34.290 に答える