3
function safe(){
    if($(this).is(':checked')){
        $("select[name='sort']").attr("disabled", "disabled");
        $("input[name='group']").attr("disabled", "disabled")
    } else {
        $("select[name='sort']").attr("disabled", false);
        $("input[name='group']").attr("disabled", false)
    }
}
$('input#safe').change(failsafe);

onLoad と onChange を同時に実行したい関数があります。現在、onChange のみが機能しますが、onLoad では、これらのフィールドは有効なままです。

ご協力いただきありがとうございます!

4

2 に答える 2

3

これが探しているものかどうかは完全にはわかりませんがsafe()、ページの読み込み時にコードを実行したい場合は、これを試してください。

例: http://jsfiddle.net/ewNEc/

$(function() {

    function safe(){
        if( this.checked ){
            $("select[name='sort']").attr("disabled", "disabled");
            $("input[name='group']").attr("disabled", "disabled")
        } else {
            $("select[name='sort']").attr("disabled", false);
            $("input[name='group']").attr("disabled", false)
        }
    }
    $('input#safe').change(safe).triggerHandler("change");

});

.triggerHandler()状態を変更せずにハンドラーを起動するために使用します。

于 2010-09-04T19:28:43.523 に答える
2

ここにあなたが言及している機能があり、それは単なる投稿の混乱であるとsafe想定しています。failsafe代わりに、次のようにDOM プロパティを使用して非常に短くすること.is(':checked')ができます。.checked

$(function() {
  $('input#safe').change(function() {
    $("select[name='sort'], input[name='group']").attr("disabled", this.checked);
  }).change();
});

最後の.change()呼び出しは、change先ほどバインドしたイベント ハンドラーをトリガーするため、ロード時にも実行されます。

于 2010-09-04T19:32:10.910 に答える