天天看點

表單驗證(輸入完成,手機号,金額)

基礎函數

  • 金額驗證
// 正小數,小數點後兩位,數值最前不能有0。
//'(\.[0-9]{1,2})?$)'修改其中的'2',可以改變小數點後位數的驗證
var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
var money = "520.100";
console.log(reg.test(money));//true
//000 錯
//0 對
//0. 錯
//0.0 對
//050 錯
//00050.12錯
//70.1 對
//70.11 對
//70.111錯
//500 正确
           
  • 金額數值保留兩位小數,一位自動補零
//round() 方法可把一個數字舍入為最接近的整數:
//parseFloat() 函數可解析一個字元串,并傳回一個浮點數。
   function returnFloat(value) {
       var value = Math.round(parseFloat(value) * ) / ;//舍入為小數點後兩位
       var xsd = value.toString().split(".");//分割成數組
       //小數點後沒有值,就添加'.00'
       if (xsd.length == ) {
           value = value.toString() + ".00";
           return value;
       }
       //小數點後隻有1位,就添加'0'
       if (xsd.length > ) {
           if (xsd[].length < ) {
               value = value.toString() + "0";
           }
           return value;
       }
   }
           
  • 手機号碼驗證
//驗證phoneNum,正确傳回true,錯誤傳回false
function checkMobile(phoneNum) {
   var reg_phone = /^[1][0-9][0-9]{9}$/;
    var regPhone = new RegExp(reg_phone);
    if (regPhone.test(phoneNum)) {
        return true;
    } else {
        return false;
    }
}
           
  • 發送驗證碼,倒計時
/*發送驗證碼倒計時*/
var countdown = ;//倒計時為60秒
function settime(obj) {//obj為擷取驗證碼按鈕
    if (countdown == ) {//如果倒計時為0,重置倒計時為60秒,恢複按鈕功能和文字
        // obj.attr('disabled',false);
        obj.removeAttr("disabled").removeClass('weui-btn_disabled').text("擷取驗證碼");
        countdown = ;
        return;
    } else {//如果倒計時不為0,禁用按鈕,顯示倒計時,倒計時自減1
        obj.attr('disabled', true).addClass('weui-btn_disabled').text("重新發送(" + countdown + ")");
        countdown--;
    }
    // 每1000毫秒執行一次settime(obj)
    setTimeout(function () {
        settime(obj);
    }, );
}
$(".js-btn-get-code").on('click', function () {
    var $btn = $(this);
    var tel_val=$("#mobile").val();
    if(checkMobile(tel_val)===true){
        settime($btn);
    }
});
           

判斷輸入完成

  • 每次輸入都進行判斷,(可用于驗證成功時,執行其他函數,比如給成功提示,或者改變狀态)
因為正則的關系且是每次輸入完成就驗證,導緻輸入到小數點’.’的時候就會報錯。(解決辦法是修改正則,可惜本人正則方面的知識很捉急)
//.bind('input propertychange',function(){//do something})//每次輸入完成後執行do something
$("#moneyCustom").bind('input propertychange', function () {
        var moneyCustom = $(this).val();
        var moneyCustom_end = returnFloat(moneyCustom);
        console.log(moneyCustom);
        if (moneyCustom) {
            var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
            if (!reg.test(moneyCustom)) {
                $.alert({
                    title: '提示資訊',
                    text: '贊賞金額的輸入格式不正确,請确認!'
                });
                $(this).val("");
                $("#moneyTotal").val("0.00");
                changeNum();
                return;
            }
            $("#moneyTotal").val(moneyCustom_end);
            //金額的正規表達式驗證
        } else {
            $("#moneyTotal").val("0.00");
        }
        $(".js-reward-list").find("li.active").removeClass("active").end().find(".iconfont").remove();
        changeNum();
    });
           
  • 輸入後延遲一段時間進行驗證
假設使用者輸入完成後,一段時間沒操作,就判斷為輸入完成
var queue;
   $("#moneyCustom").on('keyup', function (e) {
       var $this=$(this);
       clearTimeout(queue);
       //鍵盤輸入離開後,1000毫秒後執行
       queue = setTimeout(function () {
           var moneyCustom = $this.val();
           var moneyCustom_end = returnFloat(moneyCustom);
           console.log(moneyCustom);
           if (moneyCustom) {
               var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
               //金額的正規表達式驗證
               if (!reg.test(moneyCustom)) {
                   $.alert({
                       title: '提示資訊',
                       text: '打賞金額隻能保留小數點後兩位哦~'
                   });
                   $this.val("");
                   $("#moneyTotal").val("0.00");
                   changeNum();
                   return;
               }
               $("#moneyTotal").val(moneyCustom_end);

           } else {
               $("#moneyTotal").val("0.00");
           }
           $(".js-reward-list").find("li.active").removeClass("active").end().find(".iconfont").remove();
           changeNum();
       }, );
   });