1

我正在尝试为 jquery 编写一个自定义验证函数。规则应该是该字段不能只是数字。我知道如何只写数字或只写字母,但我希望规则说“12345”的值会失败,但“12345A”会被验证

这就是我所拥有的非数字

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !value.match(/[0-9]+/);
},"Only alphabatic characters allowed.");

但我不知道如何只做数字。


工作脚本

以下是三个可能有用的规则,最后一个是回答这个问题的规则。

 jQuery.validator.addMethod("noSpace", function(value, element) { 
    return value.indexOf(" ") < 0 && value != ""; 
}, "No spaces please");

jQuery.validator.addMethod("alpha", function(value, element) {

    return this.optional(element) || /^[a-z]+$/i.test(value);
},"Letters only please.");

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || isNaN(Number(value));
},"String cannot be numeric");
4

4 回答 4

2

像这样使用parseInt(如果操作数不是严格的数字,则返回 NaN):

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !isNaN(parseInt(value));
},"Only alphabatic characters allowed.");

不要!=在这种情况下使用,否则您可能会遇到这种不愉快的情况


根据Ken Browning的评论,parseInt这里可能不合适。试试这个:

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !isNaN(Number(value));
},"Only alphabatic characters allowed.");
于 2012-04-12T22:44:04.237 回答
1

将您的正则表达式更改为:

(/.*[a-zA-Z]+.*/)

在您的代码上:

编辑1:

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || value.match(/.*[a-zA-Z]+.*/);
},"Only alphabatic characters allowed.");
于 2012-04-12T23:07:54.997 回答
1

您可以使用

/[a-z]/i.test(value)

true如果value包含 a 和 z 之间的任何字母,则返回。

修饰符使i测试用例不敏感。

有关更多信息.test(),请查看MDN 文档

于 2012-04-12T23:08:55.187 回答
1

我认为这个正则表达式应该足够了

/[a-z]/i.test(value);

用法

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !(/[a-zA-Z]/i.test(value));
},"Only alphabatic characters allowed.");
于 2012-04-12T23:21:07.673 回答