使用我的jquery验证配置,将onkeyup设置为true时出现以下错误。如果我把它设置为false,它就可以工作,但是在我模糊字段之前我没有得到验证反馈,我希望得到每个keyup的验证:
$("#signupForm").validate({
onkeyup: true,
onclick: false
// rules omitted for brevity
}
我收到以下错误:
TypeError: validator.settings[eventType].call is not a function
validator.settings[eventType].call(validator, this[0], event);
jquery.validate.js line 391
答案 0 :(得分:36)
您实际上需要将onkeyup
选项设置为接受被验证为参数的元素的函数,因此请尝试更改:
onkeyup: true,
到
onkeyup: function(element) {$(element).valid()}
答案 1 :(得分:33)
onkeyup
,因此您无需将其设置为true
。如果这样做,则会破坏插件中已经内置的功能。
您有三种选择:
1)将onkeyup
选项保留在.validate()
之外。这默认情况下会保留onkeyup
功能启用。 (编辑:“默认情况下”表示只有在字段最初由另一个事件验证后,才会在每个“键入”事件上进行验证。)
DEMO :http://jsfiddle.net/ZvvTa/
2) onkeyup
可以设置为false
禁用此选项。
DEMO :http://jsfiddle.net/ZvvTa/1/
3)将onkeyup
替换为您自己的回调函数,以修改它的运作方式。 (演示使用默认功能)
DEMO :http://jsfiddle.net/ZvvTa/2/
以下是默认,未修改,onkeyup
回调函数:
onkeyup: function( element, event ) {
if ( event.which === 9 && this.elementValue(element) === "" ) {
return;
} else if ( element.name in this.submitted || element === this.lastElement ) {
this.element(element);
}
}
请参阅:http://docs.jquery.com/Plugins/Validation/validate#toptions
修改强>:
默认情况下,插件不会执行任何“键入”验证,直到 字段最初由另一个事件验证后才会执行。 (“懒惰”验证)
因此,这是onkeyup
回调函数的更正确修改版本,它将提供立即 onkeyup
验证。 (“急切”验证)
DEMO:http://jsfiddle.net/QfKk7/
onkeyup: function (element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else {
this.element(element);
}
}
答案 2 :(得分:5)
@Sparky是对的,正确的答案是删除onkeyup
选项,我的小提琴正在运行,因为我删除了onkeyup
选项并不是因为我将其更改为keyup
。
默认情况下,验证将在keyup事件中进行,如果您要关闭此功能,则必须添加设置onkeyup: false
。
请参阅更新的演示。
演示:Fiddle
答案 3 :(得分:3)
布尔值不是onkeyup事件的有效值。而是根据需要添加一个函数。 尝试类似:
onkeyup: function(element) {
$(element).valid();
}
onblur: function(element) {
$(element).valid();
}
答案 4 :(得分:2)
如何扩展onkeyup:
$('#signup-form').validate({
onkeyup: function(element) {
var element_id = $(element).attr('id');
if (this.settings.rules[element_id].onkeyup !== false) {
$(element).valid();
}
},
所以现在在规则范围内你可以这样做:
rules: {
username: {
required: true,
minlength: 3,
maxlength: 25,
onkeyup: false, /* on blur validation */
},
password: {
required: true,
passwordmeter: true,
onkeyup: true, /* on keyup validation */
},
通过扩展 onkeyup ,我们将其设为默认行为,因此坚持onkeyup: true
是可选的。