//長度テストのテストツール
function Len_val(min_l,max_l,tip){
this.min_v=min_l;
this.max_v=max_l;
this.tips=ヒント;
this.on_suc=null;
this.on_error=null;
}
Len_val.prototype.validate=function(fd){
if(fd.lengththis.max_v){
this.on_error();
false を返します。
}
this.on_suc();
true を返します。
}
//正则表达式验证器
function Exp_val(expression,tip){
this.exps=expression;
this.tips=ヒント;
this.on_suc=null;
this.on_error=null;
}
Exp_val.prototype.validate=function(fd){
if(!fd){
this.on_suc();
true を返します。
}
if(this.exps.test(fd)){
this.on_suc();
true を返します。
}else{
this.on_error();
false を返します。
}
}
//远程验证器
function Remote_val(url,tip){
this.p_url=url;
this.tips=ヒント;
this.on_suc=null;
this.on_error=null;
}
Remote_val.prototype.validate=function(fd){
var self=this;
$.post(this.p_url,{f:fd},
function(data){
if(data.rs){
self.on_suc();
return;
}else{
self.on_error();
}
},"json"
);
false を返します。
}
//自定义関数数验证器
function Man_val(tip,func){
this.tips=tip;
this.val_func=func;
this.on_suc=null;
this.on_error=null;
}
Man_val.prototype.validate=function(fd){
if(this.val_func(fd)){
this.on_suc();
}else{
this.on_error();
}
}
最後に私はユーザーフォームのクラスを使用して入力を行い、構築時にフィールドオブジェクトの列表を入力し、
のコントロールモジュールをオンブラーにしますイベントが検証されたパッケージャ上で
function UserForm(items){
this.f_item=items; //ハンドル文字列验证对オブジェクト数组复制给プロパティ
for(idx=0;idxvar fc=this.get_check(this.f_item[idx] ); //获取封装後の回调イベント
$("#" this.f_item[idx].field_id).blur(fc); //コントロール上で決定
}
}
//循環ループの影響を避けるために、テストイベントのプロセッサを決定
UserForm.prototype.get_check=function(v) {
return function(){ // パッケージを返しますvalidate メソッドのイベント
v.validate();
}
}
次は、提交按钮の onclick イベントを決定するための決定方法が必要です:
//绑定提交イベントと要素
UserForm.prototype.set_submit=function(bid,bind){
var self=これ;
$("#" bid).click(
function(){
if(self.validate()){
bind();
}
}
);
}
ここでは UserForm の検証メソッドを示しています。以下のとおりです:
//すべてのフィールド
UserForm.prototype.validate=function(){
for(idx in this.f_item){ //循環
this.f_item[idx].validate(); //再检测一遍
if(!this.f_item[idx].checked){
return false; //如果错误就返失败,提交阻止
}
}
return true; //一都没错就は成功执行提交を返します
}
最後に使用する例子来看看怎么用:
テスト
.suc {background-color:#00ff00;}
.error {background-color:#ff0000;}