未捕获的TypeError:对象#<error>没有方法'call'</error>

时间:2013-10-07 11:12:11

标签: javascript jquery jquery-validate

使用jquery validate插件,我想仅在调用元素的blur事件时显示/隐藏错误,不想在键入时显示错误消息。为了解决这个问题,我尝试了

$('#form').validate({
    onfocusout: true,
    onkeyup: false
});

但是一旦我点击任何元素外面就会抛出错误

Uncaught TypeError: Object #<error> has no method 'call' 

2 个答案:

答案 0 :(得分:4)

onfocusout而非onfoucusout,请更改为:

$('#form').validate({
    onfocusout: function(element) { $(element).valid(); },
    onkeyup: function(element) { $(element).valid(); }
});

答案 1 :(得分:1)

正如Sudhir已经指出的那样,你拼错了onfocusout选项。

此外,此插件中的onfocusoutonkeyup选项已默认启用

你只有两个选择......

1)如果您要停用onfocusoutonkeyup,请将其设为false ...

$('#form').validate({
    onfocusout: false, // disable validation on blur
    onkeyup: false     // disable validation on key-up
});

2)如果您想修改onfocusoutonkeyup的默认行为,请将它们设置为自定义函数...

$('#form').validate({
    onfocusout: function(element, event) {
        // your custom callback function for blur event
    },
    onkeyup: function(element, event) {
        // your custom callback function for key-up event
    }
});

否则,如果您只是想要onfocusoutonkeyup选项的默认行为,完全取消.validate()来电As per documentation,将这些设置为true “不是有效值”并会破坏插件。

$('#form').validate({
    // onfocusout: true, // <- remove this line, true value is not valid
    // onkeyup: true     // <- remove this line, true value is not valid
});

<强>文档

  

onfocusout
类型:布尔值或函数()
  验证模糊上的元素(复选框/单选按钮除外)。如果未输入任何内容,则跳过所有规则,除非该字段为   已被标记为无效。设置为一个功能来自己决定   何时运行验证。 布尔值true不是有效值


  

onkeyup
类型:布尔值或函数()
  验证密钥上的元素。只要该字段未标记为无效,就不会发生任何事情。否则,将在每个密钥上检查所有规则   事件。设置为false以禁用。设置为一个函数来决定   你自己何时运行验证。 布尔值true无效   值