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

我假设这里safefailsafe您所指的功能,它只是一个发布混淆。而不是.is(':checked')你可以只使用.checkedDOM 属性并使其非常短,如下所示:

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

最后的.change()调用会触发change您刚刚绑定的事件处理程序,因此它也会在加载时运行。

于 2010-09-04T19:32:10.910 回答