0

目的のチェックボックスをオンにすると、選択フォーム要素を無効にするスクリプトを作成したいと思います。これから使う機会が増えるので、対象選択IDを引数にとる関数にしたいと思いました。問題は、ID を引数として渡すと、この関数が機能しないことです。それどころか、ハードコーディングされたIDで動作するようです。

<select id="worldSelect" class="select" name="world">
<input id="worldcb" type="checkbox" checked="yes" value="any" name="world">

function toggleSelection(id){
    var el = '#' + id;
    if (this.checked) {
        $(el).attr('disabled', 'disabled');
    } else {
        $(el).removeAttr('disabled');
    }
}

$(function() {
    toggleSelection('worldSelect');
    $('#worldcb').click(toggleSelection);
});
4

2 に答える 2

2

同じ関数を 2 回呼び出して、関数が id 変数を記憶することを期待することはできません。

ただし、次のようなことができます。

function toggleSelection(e){
    var el = '#' + e.data;
    console.log(arguments);
    if (this.checked) {
        $(el).attr('disabled', 'disabled');
    } else {
        $(el).removeAttr('disabled');
    }
}

$(function() {
    $('#worldcb').click('worldSelect', toggleSelection);
});​

フィドル: http://jsfiddle.net/4ZBne/1/

于 2012-05-09T20:34:47.353 に答える
1

どうですか:

$('#worldcb').click(function() {
    toggleSelection('worldSelect', $(this).is(':checked'));
});

function toggleSelection(sel, chk) {
    $('#' + sel).attr('disabled', chk);
}​

jsFiddle の例

toggleSelection() 関数は、選択ボックスの ID である sel と、使用するチェックボックスである chk の 2 つの引数を取ります。

于 2012-05-09T20:38:44.223 に答える