統一校驗的東東

應公司要求寫了一個統一校驗的東西 ,結果發現跟prototype一個插件思想上重合了,它是一年前開源的,我也是差不多一年寫的,今天拿出來曬下。


//讓渡$
var $j = jQuery.noConflict();

function MyValidate(){

}

//驗證是否爲空
MyValidate.checkEmpty = function(obj){
var flag = true;
if (StringUtil.getLength(StringUtil.trimAllSpace(obj.value))<1){
$j(obj).attr("title","["+obj.titles+"]項不能爲空。");
flag = false;
return flag;
}
return flag;
}

//驗證取值範圍
MyValidate.checkLength = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
//獲取當前對象長度
var len=StringUtil.getLength(StringUtil.trimAllSpace(obj.value));
if($j(obj).attr("maxLength")<len||len<$j(obj).attr("minLength")){
$j(obj).attr("title","["+obj.titles+"]取值範圍是\'"+$j(obj).attr("minLength")+"\'位到\'"+$j(obj).attr("maxLength")+"\'位之間。");
flag = false;//設置返回標誌
return flag;
}
return flag;
}
//驗證最大長度
MyValidate.checkMaxLength = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(StringUtil.getLength(StringUtil.trimAllSpace(obj.value))>$j(obj).attr("length")){
$j(obj).attr("title","["+obj.titles+"]最大長度是\'"+$j(obj).attr("length")+"\'。");
flag = false;//設置返回標誌
return flag;
}
return flag;
}
//驗證郵政編碼
MyValidate.checkPostalCode = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(!VerifyUtil.isPostalCode(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","請輸入正確的["+obj.titles+"]。");
flag = false;
return flag;
}
return flag;
}

//驗證固定電話與手機號碼
MyValidate.checkPhoneAndMobile = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(!VerifyUtil.isMobile(StringUtil.trimAllSpace(obj.value)) || !VerifyUtil.isPhoneEx(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","請輸入正確的["+obj.titles+"]。");
flag = false;
return flag;
}
return flag;
}
//驗證只能輸入整數字符(不帶小數點)
MyValidate.checkIsInt = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(!VerifyUtil.isInt(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","請輸入正確的["+obj.titles+"]。");
flag = false;
return flag;
}
return flag;
}

//驗證非法字符
MyValidate.checkValidString = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(!VerifyUtil.isValidString(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","["+obj.titles+"]中存在非法字符。");
flag = false;
return flag;
}
return flag;
}

//驗證傳真號碼
MyValidate.checkPhoneEx = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(!VerifyUtil.isPhoneEx(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","請輸入正確的["+obj.titles+"]。");
flag = false;
return flag;
}
return flag;
}

//驗證手機號碼
MyValidate.checkMobile= function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(!VerifyUtil.isMobile(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","請輸入正確的["+obj.titles+"]。");
flag = false;
return flag;
}
return flag;
}


//驗證EMAIL
MyValidate.checkEmail= function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//對象爲空則返回
if(!VerifyUtil.isEmail(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","請輸入正確的["+obj.titles+"]。");
flag = false;
return flag;
}
return flag;
}
[color=red]
var myArray = new Array("checkEmpty","checkLength","checkMaxLength","checkPostalCode","checkValidString","checkPhoneEx","checkMobile","checkEmail","checkPhoneAndMobile","checkIsInt");[/color]

[color=orange]//驗證元素
//@param area 參數可以是div,table,form等元素的id或styleId表示的是一個範圍。
function checkElement(area,type){

var flag = true;//返回標誌
//按回車跳轉事件
$j("input,textarea,select").each( function(i) {
$j(this).attr("tabIndex",++i);
$j(this).keypress( function() {
FormUtil.nextFocusEx(this.form);
});
});

//匹配一個範圍內所有的文本框及文本域
$j("#"+area).find("input[@type=text],textarea").each(function (i) {

//提交校驗
if(type=="submit"){
flag=initValidate(this);

}

//失去焦點校驗
$j(this).blur( function() {
flag=initValidate(this);
if(!flag)
return flag;
});
});

$j("#"+area).find(".Edit_input_error").each(function (i) {
//提交後定位到第一個錯誤樣式項並彈出提示信息
var errorMessage=$j("#"+area).find(".Edit_input_error:first").attr("title");//匹配第一個錯誤樣式項title屬性
alert(errorMessage);//彈出錯誤信息
$j(".Edit_input_error:first").focus();//光標定位
flag = false;
return flag;//返回不提交
});
return flag;
}

function initValidate(obj){
var flag = true;//返回標誌
var funArr = new Array();//保存函數名稱的數組
var attrArr = new Array();//保存函數屬性的數組
var classArr=obj.className.split(" ");//根據" "來獲取多校驗函數
for(var i=0,j=0;i<classArr.length;i++){
if(classArr[0].indexOf("attr")==-1){//判斷class首個對象是否爲添加屬性,
// flag = false;
return flag;//不滿足條件返回
}
eval("$j(obj)."+classArr[0]);//給當前操作對象動態添加'titles'屬性

var returnArr=classArr[i].split(".");//根據"."來分離函數及屬性
if(2==returnArr.length){
funArr[j]=returnArr[0];
attrArr[j]=returnArr[1];
//alert(funArr[j]);
// alert(attrArr[j]);
eval("$j(obj)."+attrArr[j]); //給當前操作對象動態添加屬性
}else{
funArr[j]=returnArr[0];
}
j++;
}
for(var i=0;i<funArr.length;i++){
for(var a in myArray){
if(funArr[i] ==myArray[a]){
MyValidate.validate=MyValidate[funArr[i]];
var result=MyValidate.validate(obj);
if(!result){
$j(obj).addClass('Edit_input_error');//加載錯誤樣式
flag = false;
return flag;//不滿足條件返回
}else{
//flag = true;
$j(obj).removeClass('Edit_input_error');//移除錯誤樣式
$j(obj).removeAttr('title');//校驗通過移除title屬性
}
}
}
}

return flag;
}[/color]


這個東東並沒有什麼成果而言,主要是它的實現方式吧,本人JQUERY用的不是很好,很多地方高手看了不要笑,但可以指點吧!文中具體的校驗方法的代碼我這裏就不曬了,網上一搜一大片,沒有必要寫出來!
發佈了41 篇原創文章 · 獲贊 1 · 訪問量 1827
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章