zoukankan      html  css  js  c++  java
  • 移动端开发,H5对number输入框的一些处理

    最近H5开发,用到了金额输入框,但是又没有定制金额键盘,所以就用type="number"调用系统的数字键盘。

    需求需要,用户是不能输入除数字以为其它的内容的,金额最多只能输入到小数点后的两位,。

    所以研究了一些,number键盘,当用户输入非数字时,取到的value为空,但是输入框展现的还是用户所输入的内容。

    例如 :用户输入a,渠道的value 为空,但是输入框展现的为a;特例(当用户输入2.时,取到的值为2,输入框展现为2.)

    <!DOCTYPE html>
    <html>
    <head>
    <title>demo5</title>
    <meta charset="utf-8">
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
    <style type="text/css">
    </style>
    </head>
    <!-- 禁用复制 ,除去一些不必要的因素 -->
    <body onpaste="return false">
        <div><input type='number' id = 'number'></div>
    </body>
    <script type="text/javascript">
        var me = window;
        (function init(){
            me.number = getId('number');
            me.n = '';
            initEvent();
            
            function initEvent(){
                me.number.addEventListener('keyup', number, false);
            }
            function getId(id){
                return document.getElementById(id);
            }
            function number(){//金额,
                console.log(this.value);
                if(this.value == ''){//校验,用户输入后,输入框的值是否为数字,当不为数字时,取到的为空
                    this.value='';
                    this.value = me.n;
                    return
                }
                if(!/^d{0,9}.{0,1}(d{1,2})?$/.test(this.value)){//校验不超过两位小数
                    this.value = me.n;
                }
                if(window.event.keyCode != 8){
                    if(this.value%1==0 && me.n==this.value){//当用户按下非删除键时,新值和旧值相同,旧值为整数
                        return
                    }
                    if(me.n.indexOf(".")>-1 && me.n==this.value){//当用户按下非删除键时,新值和旧值相同,旧值为小数
                        this.value='';
                        this.value = me.n;
                        return
                    }
                }else{
                    if(me.n.indexOf(".")>-1 && this.value.indexOf(".")<0){//当按下删除时,删掉小数点时
                        me.n = this.value;
                        return
                    }
                }
                me.n = this.value
                if(me.n.indexOf(".")>0){
                    this.value = me.n;
                }
            }
        }())
    
    </script>
    </html>

    可以试一下,这样几可以限制用户的输入

  • 相关阅读:
    Alpha阶段项目展示
    Alpha阶段测试报告
    300种常用非处方中成药--06骨伤科用药/07皮肤科用药
    300种常用非处方中成药--05五官科用药
    300种常用非处方中成药--04儿科用药
    300种常用非处方中成药--02外科用药/03妇科用药
    300种常用非处方中成药-01内科用药
    文科思人,理科格物
    谁动我的奶酪--经典句子
    博士 水上飘
  • 原文地址:https://www.cnblogs.com/HeCaho/p/6938582.html
Copyright © 2011-2022 走看看