プロジェクトでUFValidatorを使用していますが、カスタム検証チェックをいくつか追加したいと思います。
入力にaz0-9以外のものが含まれている場合にエラーが発生するユーザー名チェックを追加したいと思います。スペースも何もありません。同様に、azのみを許可するが、スペースは許可する名前チェックを追加したいと思います。
組み込みの電子メール検証に基づいてチェックを行っています。フィルタは次のとおりです。
var mail_filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
そして、ここに電子メールチェックのコードがあります:
// E-MAIL VALIDATION
if (obj.hasClass('req-email')) {
tmpresult = mail_filter.test(valAttr);
if (!tmpresult) errorTxt = (valAttr == '') ? opts.errorMsg.reqMailEmpty : opts.errorMsg.reqMailNotValid;
result = result && tmpresult;
}
そして、これが私のフィルターです:
var username_filter = /^[a-zA-Z0-9]/;
var name_filter = /^[a-zA-Z ]/;
そしてここに私のコードがあります:
// USERNAME VALIDATION
if (obj.hasClass('req-username')) {
tmpresult = username_filter.test(valAttr);
if (!tmpresult) errorTxt = (valAttr == '') ? opts.errorMsg.reqUsernameEmpty : opts.errorMsg.reqUsernameNotValid;
result = result && tmpresult;
}
// NAME VALIDATION
if (obj.hasClass('req-name')) {
tmpresult = name_filter.test(valAttr);
if (!tmpresult) errorTxt = (valAttr == '') ? opts.errorMsg.reqNameEmpty : opts.errorMsg.reqNameNotValid;
result = result && tmpresult;
}
ここでもそれらを参照しました:
// gather inputs & check is valid
$(merged_options.scope+' .req-email, '+merged_options.scope+' .req-string, '+merged_options.scope+' .req-same, '+merged_options.scope+' .req-both, '+merged_options.scope+' .req-numeric, '+merged_options.scope+' .req-date, '+merged_options.scope+' .req-min, '+merged_options.scope+' .req-username, '+merged_options.scope+' .req-name').each(function() {
thisValid = $.formValidator.validate($(this),merged_options);
boolValid = boolValid && thisValid.error;
if (!thisValid.error) errorMsg = thisValid.message;
});
対応するエラーメッセージも存在しますが、表示する必要はないと思います。
これでうまくいくと思いましたが、試してみるとかなり変な動作をします。間違ったエラーメッセージを表示し、希望どおりに検証していません。彼らのウェブサイトをチェックしてここで検索しましたが、それに関連するものは何も見つかりません。