【问题标题】:OnLoad and OnChange (jQuery)OnLoad 和 OnChange (jQuery)
【发布时间】:2010-09-04 19:24:35
【问题描述】:
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,这些字段仍然启用。

感谢您的帮助!

【问题讨论】:

    标签: jquery forms onload onchange


    【解决方案1】:

    不完全确定这是否是您要查找的内容,但如果您希望在页面加载时运行 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() 触发处理程序而不更改状态。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多