zoukankan      html  css  js  c++  java
  • JavaScript+vue:自定义指令禁止表单输入非整数

    input type="text" 没改成number,造成正则验证在英文输入法下失效...
    嗯,再次被自己蠢哭。
    html:
                  <!--<input type="number" min="0" max="10">-->
                  <button style="padding:1px 4px" @click="amountChange(item, -1)">-</button>
                    <input id="index" type="number" v-model="item.counter" v-number-only min="1" max="10">
                    <!--<input type="text" v-model="item.counter" @input="formatCounter">-->
                    <button style="padding:1px 4px" @click="amountChange(item, 1)">+</button>
    directives: {
            numberOnly: {
                bind: function(el) {
                    el.handler = function() {
                        var formatVal = /^+?[1-9][0-9]*$/;
                        var val = el.value;
                        if(!formatVal.test(val)){
                            var reg = new RegExp(val,'g');
                            el.value = val.replace(reg, 1);
                        }
                    }
                    el.addEventListener('input', el.handler)
                },
                unbind: function(el) {
                    el.removeEventListener('input', el.handler)
                }
            }
        },

     以上其实还有一个问题,待补充。。。忙死本宝宝了

    如果直接用JavaScript写,可能对用户体验来说,不够友好。

    不用 vue 指令的版本如下:

    <input type="number" value="" id="1" onkeyup="initNum(this.id)">
    <script>
    
        function initNum(id) {
            var val = document.getElementById(id).value;
            var formatVal = /^+?[1-9][0-9]*$/;
            if(!formatVal.test(val)){
                var reg = new RegExp(val,'g');
                document.getElementById(id).value = val.replace(reg, '1');
            }
        }
    
    </script>

    用户如果输错,输入了字母,那么,无法用backspace键删除。只能用鼠标选中,再改数字。

  • 相关阅读:
    ACM-ICPC 2018 徐州赛区网络预赛 F Features Track(STL模拟)
    ACM-ICPC 2018 徐州赛区网络预赛 H Ryuji doesn't want to study (树状数组差分)
    数位dp
    Number String
    The King’s Ups and Downs
    容斥定理
    Anagram(山东省2018年ACM浪潮杯省赛)
    STL——queue
    lower_bound和upper_bound使用说明
    int string相互转换
  • 原文地址:https://www.cnblogs.com/dodocie/p/7747087.html
Copyright © 2011-2022 走看看