限制文本框的输入,现有的代码如下:        var record = { num: "" };
        var checkDecimal = function (n) {
            var decimalReg = /^\d{0,6}\.{0,1}(\d{1,2})?$/;
            if (n.value != "" && decimalReg.test(n.value)) {
                record.num = n.value;
            }
            else {
                if (n.value != "") {
                    n.value = record.num;
                }
            }
        } 
现在的这个正则表达式可以输入八位数字,或者有两位小数的六位数字。
我想要的效果是:只能输入6位数字,或者有两位小数的六位数字。如果第七位不是‘.’,那么就不能继续输入了。
求高手帮忙改下正则表达式~谢谢了。

解决方案 »

  1.   

    /^\d{0,6}(\.\d{0,2})?$/
    最后还是觉得这样比较好,\d{6}的话,输入一个数字就死活输不了。如果(\.\d{0,2})?中的用\d{2},那就没法输入一位小数,\d{1,2}除非同时输入点和数字,不然点和数字都输入不了。
    虽然这样可能会有输入六位数加一个点的情况,但是可以麻烦点在后台获取文本框值的时候判断最后一位是不是点,是的话直接截取不要。
      

  2.   

    你的想法是对的。只是你别在输入的时候较验啊。你在blur焦点离开时候校验/^\d{6}(\.\d{1,2})?$/才行啊,对不对?呵呵。焦点离开触发这个验证。