2012-04-12 12 views
1

jqueryのカスタム検証関数を記述しようとしています。ルールは、フィールドを数字のみにすることはできません。私は数字のみまたは唯一のアルファを書く方法を知っているが、私は、ルールが「12345」の値が失敗するだろうと言いたいが、「12345A」はJqueryカスタム検証は非数値です

を検証されるだろうこれは私が非数値

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"); 
+0

十分なはずだと思いますか –

+0

基本的にusernameというフィールドはありませんが、ユーザーがユーザーIDを模倣しようとすると整数で入力する必要はありません。したがって、少なくとも1つのアルファベットのcharが必要です。すべて数字にすることはできません。 – Brian

答えて

2

このような(オペランドは厳密数でない場合はNaNを返します)使用parseInt

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

が、この場合に!=を使用しないでくださいまたはあなたがthis unpleasant situationに巻くことができます。


ケンブラウニングのコメントによると、parseIntは、ここで適切ではないかもしれません。代わりにこれを試してみてください。これに

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

parseIntはおそらくここでは適切ではありません:alert(!! parseInt( '3x')) –

+0

本当、別のオプションで編集します。私は100%肯定的ではないが、「数」はそのトリックを行うべきである。ここではダブルではありません。 :p –

+1

少なくとも1文字がアルファベット順であればOPが入力を有効にしたいと思うが、わからない。 Btw、あなたは 'NaN'に対してテストするために比較演算子を使用することはできません、' isNaN() 'を使用してください。 –

1

変更あなたの正規表現を:

EDIT 1:あなたのコードの

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

jQuery.validator.addMethod("nonNumeric", function(value, element) { 
    return this.optional(element) || value.match(/.*[a-zA-Z]+.*/); 
},"Only alphabatic characters allowed."); 
1

を使用でき

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

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

i修飾子は、テストケースを区別しません。

.test()の詳細については、MDN documentationをご覧ください。

1

私は私が正しく理解していれば、あなたは値が数値と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."); 
+0

'i'修飾子を使用している場合は' AZ'は必要ありません。それはその全体のポイントです;) –

+0

@FelixKling、Oops .. ..訂正ありがとうございます – Starx

+0

これはASCII以外の文字には役に立ちません – hgolov