【发布时间】:2015-12-13 02:50:44
【问题描述】:
我在我的 rails 应用程序中使用 jquery 验证。我想将某些规则与某些触发器相关联。我在编写逻辑时遇到了麻烦。我会尽可能清楚地解释我想要什么。
规则:
- 最大长度为 25 个字符。
- 最少 3 个字符。
- 字符只能是字母数字或空格。
触发器:
- maxlength 应该只在 keyup 时触发。
- minlength 应该只在提交时触发。
- 无效字符应触发 onkeyup。
当少于 3 个字符时,我在如何让无效字符触发 keyup 的逻辑上遇到问题。我用于无效字符的正则表达式是/^[a-z\d ]+$/i。
这是我的代码:
$('#custom-tag').validate({
onkeyup: function (element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else if (this.elementValue(element).replace(/\s+/g, ' ').trim().length < 3) {
return;
} else {
this.element(element);
}
},
rules: {
tag: {
minLen: 3,
maxLen: 25,
format: true
}
}
});
});
更新:
我试图通过向同一个表单添加第二个验证来使其工作。代码在这里:
$('.custom-tag-onkeyup').validate({
onkeyup: function (element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else {
this.element(element);
}
},
rules: {
tag: {
maxLen: 25,
alphanumeric: true
}
},
tooltip_options: {
tag: { placement: 'right', animation: false }
}
});
$('.custom-tag-onblur').validate({
onkeyup: false,
onfocusout: function (element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else {
this.element(element);
}
},
rules: {
tag: {
minlength: 3
}
},
tooltip_options: {
tag: { placement: 'right', animation: false }
}
});
我正在向我的表单添加两个类,因此我可以通过两种不同的方式对其进行验证,但它似乎不起作用。似乎一次只有一个验证有效。我做错了什么?
【问题讨论】:
-
您可以在模糊时手动检查长度。最小长度检查不应该在 keyup 上
-
你会怎么做?单独调用 .validate?
-
我从未使用过 jQuery 验证器插件,但简单的答案是肯定的。想法是在用户输入时检查单个字符的有效性,一旦他说我完成输入,即在模糊时,检查完整的有效性和长度。也不要检查最大长度,而是使用文本框的 maxLength 属性。
-
我的 javascript 不是很好,无法从头开始编写这一切。该插件使它变得容易,但我只是很难弄清楚如何满足上述所有规则/触发器。
标签: javascript jquery validation