1

jqueryのカスタム検証関数を作成しようとしています。規則は、フィールドが数値のみであってはならないということです。数値のみまたはアルファのみを記述する方法を知っていますが、「12345」の値は失敗するが、「12345A」は検証されるというルールを指定したい

これは私が非数値のために持っているものです

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

しかし、私は数値だけではない方法を理解することはできません。


作業スクリプト

ここに役立つかもしれない3つのルールがあります。最後のルールはこの質問に答えるルールです。

 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.");

!=この場合は使用しないでください。使用しないと、この不快な状況に陥る可能性があります。


ケン・ブラウニングのコメントによると、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)

aとzの間に文字が含まれているtrue場合に返されます。value

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 に答える