Javascriptは統一的なフォーム検証を実現する.
7349 ワード
多くの項目において、フォーム検証は不可欠な一環であり、登録、ログイン、アップロードなどがありますが、コードを書くスタイルが違います.一致していなくて優雅なスタイルがないと、便利な配置がなく、コードが混乱しやすくなります.
通常のコードを整理しないと、次のようになります.コードの中でif elseが多すぎて、検証ルールが多いと、長い紙幅を占めて、混乱しているように見えます. コードは繰り返し使用に不利で、直接コピーして変更が大きいです. は結合性が強く、メンテナンスには不利です.増加しても削除しても注意が必要です. 以上のように、フォーム検証のプロセスは簡単で、多重化しやすく、構成しやすいはずである.UIデザイナーの設計スタイルはしばしば単一ではないので、柔軟で、いくつかの異なる場面に適応できるようにしたい.
1,多くの検証シーンが類似しているので、ルールを抽出し、統一管理し、その後の追加や修正にも便利です.
3,検証された論理プロセスは上の構成によって、検証データを関数で取得し、次に規則ライブラリと一致し、エラー情報を返すことができ、全体の検証プロセスを実現することができる.
通常のコードを整理しないと、次のようになります.
if(username == ''){
alert('username ');
return false;
}else if(password == ''){
alert('password ');
return false;
}else if(password.length < 6){
...
return false;
}
...
これは以下の問題が発生します.1,多くの検証シーンが類似しているので、ルールを抽出し、統一管理し、その後の追加や修正にも便利です.
//
var rules = {
//
isEmpty:function(value){
return value == '';
},
//
minLength:function(value,length){
return value.length >= length;
},
//
maxLength:function(value,length){
return value.length <= length;
},
//
length:function(value,min,max){
return value.length >= min && value.length <= max;
},
//
isMobile:function(value){
return /(^1[3|5|7|8|9][0-9]{9}$)/.test(value);
}
//
}
2,良好なコール方式がどのように良好なコール方式を実現するかは重要であり、直接コードのスタイルに影響を与え、また多重化が便利かどうかはnpmのpackage.jsonを参考にしてもいいです.必要なものは何ですか?配置は何ですか?ルールごとにモジュールであることを想像して、モジュールを配置することです.var v = verify([
{//
value:username,
isEmpty:' ',
},
{//
value:password,
isEmpty:' ',
minLength:' 6 &6',
maxLength:' 12 &12',
},
{//
value:phone,
isEmpty:' ',
isMobile:' '
}
//...
])
以上のように、実現したい方式は簡単で使いやすく、配置が便利で、いくつかの異なるシーンが適用されますので、ここではvalueだけを取って検証して、dom、様式に介入しないし、デフォルトのヒントも提供しません.jQuery Validateなどの検証プラグインと同じでなく、直接dom元素と結合します.3,検証された論理プロセスは上の構成によって、検証データを関数で取得し、次に規則ライブラリと一致し、エラー情報を返すことができ、全体の検証プロセスを実現することができる.
// items
function verify(items){
var lens = items.length,
//
arr = [],
//
result = {check:true};
for(var i=0; ivar l = items[i];
val = l.value;
//
if(l.isEmpty && rules.isEmpty(val)){
arr[i] = l.isEmpty;
break;
}
//
if(l.minLength){
var index = l.minLength.lastIndexOf('&'),
msg = l.minLength.substring(0,index),
len = l.minLength.substring(index+1);
if(!rules.minLength(val,len)){
arr[i] = msg;
break;
}
}
//
if(l.maxLength){
var index = l.maxLength.lastIndexOf('&'),
msg = l.maxLength.substring(0,index),
len = l.maxLength.substring(index+1);
if(!rules.maxLength(val,len)){
arr[i] = msg;
break;
}
}
//
if(l.isMobile){
if(!rules.isMobile(val)){
arr[i] = l.isMobile;
break;
}
}
//
}
//
// ,check false,
if(arr.length !== 0){result.check = false;}
result.l = arr.filter(function(v){
return v;
})
return result;
}
上記の方法により、統一的なスタイルの検証プロセスを実現しましたが、実際の開発においては、いくつかのエラー情報を返すなど、さまざまな場面があります.また、ページ上に展示されています.また、どのようにvue/anglar.などとのフレームワークを組み合わせるかなど、紙面の問題のために、すべてのコードを貼らないで、上の実現はすでにgithubにアップロードされています.githubアドレス:https://github.com/weijhfly/verifyご注意ください.もし問題があれば、メッセージをお願いします.