0

フォームを検証するためにhttp://bassistance.de/jquery-plugins/jquery-plugin-validation/を使用しています。残念ながら、テキストのみの方法はありません。だから私は自分で書こうとしました:

$(document).ready(function(){
$("#staffedit").validate(
    {
        rules: {
        editDisplayName: {
            textonly: true,
            required: true
        }
    }}
    );
jQuery.validator.addMethod(
"textonly", 
function(value, element)
{console.log('textonly called.');
 console.log(/[-.\w\s]/.test(value));
    return this.optional(element) || /[-.\w\s]/.test(value); 
}, 
jQuery.format("Please only enter letters, spaces, periods, or hyphens.")
);
    });

console.log関数は適切なタイミングでコンソールに出力するため、メソッドが呼び出されます。私が理解していないのは、入力フィールドに$または*を入力できる理由です。私はそこに何でも入れることができます、そしてそれはまだ有効であると評価されます。

http://regexpal.com/を使用して正規表現をテストしましたが、そこでは正常に機能します。

では、プラグインでテキスト、スペース、ピリオド、ハイフンのみを許可するにはどうすればよいですか?

ちなみに、à、É、ā、またはô...などのアクセント付きの文字も許可したいと思います。

4

3 に答える 3

1

問題は、test()関数がどのように機能するかにありました。一致する場合はtrueを返します。それが私をとても混乱させたものです。私が使用していた正規表現は、実際に私が思っていたことを実行していました。http://www.w3schools.com/jsref/jsref_regexp_test.aspを参照してください

/[^-\.a-zA-Z\s]/.test("David"); //Returns false
/[^-\.a-zA-Z\s]/.test("Davi$ *d"); //Returns true
//without the ^
/[-\.a-zA-Z\s]/.test("Davi$ *d"); //Returns true
/[-\.a-zA-Z\s]/.test("David"); //Returns true

ご覧のとおり、これはあまり役に立ちません。だから私がしたことは、returnステートメントからテストを引き出すことでした。このような:

$(document).ready(function(){
$("#staffedit").validate(
    {
        rules: {
        editDisplayName: {
            textonly: true,
            required: true
        }
    }}
    );
jQuery.validator.addMethod(
"textonly", 
function(value, element)
{
    valid = false;
    check = /[^-\.a-zA-Z\s\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02AE]/.test(value);
    if(check==false)
        valid = true;
    return this.optional(element) || valid;
}, 
jQuery.format("Please only enter letters, spaces, periods, or hyphens.")
);
});

そこで、必要のない文字が存在するかどうかを確認します。test()がfalseを返さない場合は、有効です。

また、Unicodeのものも理解しました。[\ u00C0- \ u00D6 \ u00D8- \ u00F6 \ u00F8- \ u02AE]はたくさんのものと一致します。私は、 http://en.wikipedia.org/wiki/List_of_Unicode_charactersを使用して、何を入れるかを考えました。私が欲しかったすべて。\u構文を理解するのに役立ったJavascript+Unicode正規表現へのリンクを投稿してくれたKyleSchmidtに感謝します。おそらくUnicodeをもう少し徹底的にチェックする必要がありますが、今のところはそれで十分です。

問題が解決しました。

于 2012-07-18T22:24:46.577 に答える
0

追加のメソッドjsを取得した場合、そこに文字バリデーターがあります

http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.js

あなたは私が信じるbasicpuncの手紙が欲しい

于 2012-07-18T20:42:31.343 に答える
0

^を文字クラス内に置くと、文字クラスの内容が無効になります。[-。\w\s]に行きます

于 2012-07-18T20:57:56.493 に答える