close

javascript很適合用於欄位驗証....而網路上都可以找到很多驗証方式....

一、是否輸入正確的身份証字號(資料來源:http://swf.com.tw/?p=94)

function checkID(idStr){
  // 依照字母的編號排列,存入陣列備用。
  var letters = new Array('A', 'B', 'C', 'D',
      'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M',
      'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
      'X', 'Y', 'W', 'Z', 'I', 'O');
  // 儲存各個乘數
  var multiply = new Array(1, 9, 8, 7, 6, 5,
                           4, 3, 2, 1);
  var nums = new Array(2);
  var firstChar;
  var firstNum;
  var lastNum;
  var total = 0;
  // 撰寫「正規表達式」。第一個字為英文字母,
  // 第二個字為1或2,後面跟著8個數字,不分大小寫。
  var regExpID=/^[a-z](1|2)\d{8}$/i;
  // 使用「正規表達式」檢驗格式
  if (idStr.search(regExpID)==-1) {
    // 基本格式錯誤
	alert("請仔細填寫身份證號碼");
   return false;
  } else {
	// 取出第一個字元和最後一個數字。
	firstChar = idStr.charAt(0).toUpperCase();
	lastNum = idStr.charAt(9);
  }
  // 找出第一個字母對應的數字,並轉換成兩位數數字。
  for (var i=0; i<26; i++) {
	if (firstChar == letters[i]) {
	  firstNum = i + 10;
	  nums[0] = Math.floor(firstNum / 10);
	  nums[1] = firstNum - (nums[0] * 10);
	  break;
	}
  }
  // 執行加總計算
  for(var i=0; i<multiply.length; i++){
    if (i<2) {
      total += nums[i] * multiply[i];
    } else {
      total += parseInt(idStr.charAt(i-1)) *
               multiply[i];
    }
  }
  // 和最後一個數字比對
  if ((10 - (total % 10))!= lastNum) {
	alert("身份證號碼寫錯了!");
	return false;
  }
  return true;
}
 
二、是否輸入正確的統一編號.台灣(資料來源:http://www.wretch.cc/blog/himiro/10593103 )
function idchk(idvalue) { 
   var tmp = new String("12121241"); 
   var sum = 0; 
   re = /^\d{8}$/; 
   if (!re.test(idvalue)) { 
       alert("格式不對!"); 
       return false; 
    } 
   for (i=0; i< 8; i++) { 
     s1 = parseInt(idvalue.substr(i,1)); 
     s2 = parseInt(tmp.substr(i,1)); 
     sum += cal(s1*s2); 
   } 
   if (!valid(sum)) { 
      if (idvalue.substr(6,1)=="7") return(valid(sum+1)); 
   }   
   return(valid(sum)); 

function valid(n) { 
   return (n%10 == 0)?true:false; 

function cal(n) { 
   var sum=0; 
   while (n!=0) { 
      sum += (n % 10); 
      n = (n - n%10) / 10;  // 取整數 
     } 
   return sum; 
 
三、是否為數字(資料來源:http://tw.myblog.yahoo.com/davidbulll/article?mid=79&prev=314&next=76)

function check() {
re = /^\d+$/;
if (!re.test(document.DonationIndex.txtAMT.value)) {
alert("欄位不能空白且只允許輸入整數!");
document.forms[0].t1.focus();
return false;
}
return true;
}

四、是否為E-Mail格式

function checkmail()
{
   re1 = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
   if (re1.exec(document.DonationIndex.txtEmail.value) == null)
  {
     alert("你的電子郵件格式不合!");
     document.DonationIndex.txtEmail.focus();
     return (false);
   }
}

 

五、是否為日期格式

function dateValidationCheck(str){
    var re = new RegExp("^([0-9]{4})[./]{1}([0-9]{1,2})[./]{1}([0-9]{1,2})$");
    var strDataValue;
    var infoValidation = true;
    
    if ((strDataValue = re.exec(str)) != null){
        var i;
        i = parseFloat(strDataValue[1]);
        if (i <= 0 || i > 9999){ // 年
            infoValidation = false;
        }
        i = parseFloat(strDataValue[2]);
        if (i <= 0 || i > 12){ // 月
            infoValidation = false;
        }
        i = parseFloat(strDataValue[3]);
        if (i <= 0 || i > 31){ // 日
            infoValidation = false;
        }
    }else{
        infoValidation = false;
    }

    if (!infoValidation){
        alert('請輸入 YYYY/MM/DD 日期格式');
    }
    return infoValidation;
}

arrow
arrow
    文章標籤
    javascript
    全站熱搜

    雅雅 發表在 痞客邦 留言(0) 人氣()