input-number-not-required

 

當input的type爲number時,沒有required的屬性:html

<input type=」number」 class=」aa」 />jquery

在type爲number的狀況下,若是輸入e或者爲空,利用$(「.aa」).val()獲取的值都爲空,這時提示沒法分開,但需求要求「輸入格式不正確」或「不能爲空」的提示需分開,此時可藉助於validationMessage屬性進行判斷,當輸入爲e結尾時,其$(「.aa」)[0].validationMessage的值爲「請輸入一個數字」,這時應提示「格式不正確」;當不輸入時,其$(「.aa」)[0].validationMessage的值爲」」,這時應提示「不能爲空」;ui

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
    <meta name="format-detection" content="telephone=no">
    <script src="jquery-3.2.1.js"></script>
</head>
<body>
<div>
    <input type="number" placeholder="自定義" class="user-define-money" />
</div>
<button class="btn-test">test</button>
<script>
    $(".btn-test").on('click',function(e){
        console.log($('.user-define-money').val())
        console.log($('.user-define-money')[0].value);
        var userValue =$('.user-define-money').val();
        alert(userValue);
        if(userValue ==""){
       if($('.user-define-money')[0].validationMessage){
                alert("格式不正確");
                $('.user-define-money').val("");
                return ;
            }else{
                alert("不能爲空");
                $('.user-define-money').val("");
                return ;
            }
        }
        if(/^\d+(\.)?$/.test(userValue)){
            userValue = userValue.split(".")[0];
        }
        if(/^0\d+?/.test(userValue)){
            alert("格式不正確");
            $('.user-define-money').val("");
            return ;
        }
        if(userValue==''||userValue==undefined){
            alert("不能爲空");
            return;
        }else if(isNaN(userValue)||userValue==0){
            alert("格式不正確");
            $('.user-define-money').val("");
            return ;
        } else if(checkUserDefined(userValue)){
            money = userValue;
        }else{
            alert("格式不正確");
            $('.user-define-money').val("");
            return ;
        }
    })
    function checkUserDefined(value){
        if(!isNaN(value) && /^\d+(\.\d{1,2}|\.)?$/.test(value)){
            //這裏的判斷是控制非數字和小數點最多兩位的
            if(value.indexOf(".")==-1 && value.length<9){
                //這裏的判斷是輸入沒有小數點且長度最大爲8,符合條件
                return true;
            }else if(value.indexOf(".")!==-1 && value.length<=9){
                //這裏的判斷是輸入有小數點且長度最大爲8,符合條件
                return true;
            }else{
                //剩下的就是不符合條件
                return false;
            }
        }else{
            //這裏也是不符合條件
            return false;
        }
    }
</script>
</body>
</html>

 

Ps:解決了input的type爲number時輸入e和不輸入的兩種分開提示;但仍存在部分手機能夠輸入漢字或者其餘非法字符的狀況。spa

 

ps:有人知道怎麼解決上述狀況的,還望指教啊,謝謝呢scala

本站公眾號
   歡迎關注本站公眾號,獲取更多信息