OnLoad和OnChange(jQuery)

时间:2010-09-04 19:24:35

标签: jquery forms onload onchange

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上,这些字段仍然有效。

感谢您的帮助!

2 个答案:

答案 0 :(得分: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()在不改变状态的情况下触发处理程序。

答案 1 :(得分:2)

我在这里假设safe是您所指的failsafe函数,它只是一个帖子混音。而不是.is(':checked'),你可以使用.checked DOM属性并使其非常短,如下所示:

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

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