• 控制文本框只能输入数字和小数点


    当一个文本框是单价文本框的时候。需要只能输入数字和小数点。其他的都为非法输入。找了些资料在加以改进下。虽然不是最好的。但达到了效果,不过整得太长了

        $("#changerate").live({
                    keyup: function () { //键盘按下弹起事件
                        if (!this.value.match(/^[+-]?d*?.?d*?$/)) this.value = this.t_value;
                        else this.t_value = this.value;
                        if (this.value.match(/^(?:[+-]?d+(?:.d+)?)?$/)) this.o_value = this.value;
    var value = $(this).val(); if (isNaN(value)) $(this).val(""); //如果不是数字则清空 //alert(parseInt(value)); var r = /^[0-9]*[1-9][0-9]*$/ //如果是正整数,则转换为整数 if (r.test(value)) { $(this).val(parseInt(value)); } $(this).val(Math.abs($(this).val())); //如果输入的是负数 则转换为整数 }, blur: function () { //失去焦点事件 if (!this.value.match(/^(?:[+-]?d+(?:.d+)?|.d*?)?$/)) this.value = this.o_value; else { if (this.value.match(/^.d+$/)) this.value = 0 + this.value; if (this.value.match(/^.$/)) this.value = 0; this.o_value = this.value } }, keypress: function () { //键盘按下后处理事件 if (!this.value.match(/^[+-]?d*?.?d*?$/)) { this.value = this.t_value; } else { this.t_value = this.value; } if (this.value.match(/^(?:[+-]?d+(?:.d+)?)?$/)) { this.o_value = this.value } }, paste: function () { return false; }, //不准粘贴 copy: function () { return false; } //不准复制 });

    这么一个正则表达式也能达到要求   我的正则表达式能力还得好好努力呢 -_-

    var A = document.getElementById("txtA").value;
                    var B = document.getElementById("txtB").value;
                    //alert(parseFloat(A));
    
                    if (!/^-?(?:d+|d{1,3}(?:,d{3})+)(?:.d+)?$/.test(B)) { //但这里不能匹配这样 比如 09 你可以自己判断 比如上面的例子 判断是否是整数 是的话则转化为整数在覆盖当前的value即可
                        alert("输入框有非法字符");
                    } else {
                        alert("通过验证");
                    }
    //如果你不想用户调用输入法。你可以在input样式中加入:
    style="ime-mode: disabled;"

    最后发现上面的还是不能满足我的要求 。最后决定用挨个 挨个判断的方式

      //我这里是用户可以添加多行 每行有对应的单价框 数量框  然后相乘赋值给对应行的金额框
            $("#txtsqqty,#txtprice").live({
                blur: function () { ////如果输入的是单价 判断数量是否有值 反之亦然
                    var id = $(this).attr("id");
                    var value = $.trim($(this).val());
    
                    //如果为空 则不判断 并清空
                    if (value == "") {
                        $(this).val("");
                        return;
                    }
    
                    if (!isNaN(value)) {
                        //如果是数字 看是小数还是整数
                        var regu = /^([0-9]*[.0-9])$/; // 小数测试
    
                        if (!regu.test(value)) {
                            ///是小数 则把小数转为有效的小数后 是负数(-90) 则转为正数赋给当前文本框 比如 0.000
                            $(this).val(Math.abs(parseFloat(value)));
                        }
                        else { //是整数 则转为有效的整数 赋值给当前文本框 比如 009
                            $(this).val(parseInt(value));
                        }
                    }
                    else {
    
                        if (id == "txtsqqty") alert("【数量输入框】不是有效的数字");
                        if (id == "txtprice") alert("【单价输入框】不是有效的数字");
                        return;
                    }
                }
            });

     上面会有一个bug 因为我是在失去焦点后在判断文本框的值是否合法,不合法在得到焦点。但我现在遇到的问题是。失去焦点后判断不合法。然后 就获不到焦点了

    如果你也是这样的。我们可以这样做。弄一个全局变量 标记该文本框的值是否合法 。在其他文本框获得的焦点事件下。判断改标记 如果不合法。在给该文本框获得焦点 即可。

    也许你会问  。表格那么多行,你怎么知道是那一行中的哪个 数量框 或者单价框呢? 那么: $("#id tr").index(); 或者 $(this).parent().index(); 都能拿到。该文本框在表格中的索引么。

    当然 方法不仅一种。 这只是我想到的方法。

    js设置cookie

    简单的:$.cookie("order");这是临时cookie,只在当前页面有效

    想夸页面取值则:$.cookie("order", "123", { expires: 7, path: '/' });

    //删除cookie
                $.cookie("order", null, { expires: 7, path: '/' });

  • 相关阅读:
    JavaCore和HeapDump 规格严格
    日志输出(转) 规格严格
    Assert理解(51cto) 规格严格
    Telnet工具 规格严格
    Java工具应用(转老外) 规格严格
    杂项选用 规格严格
    What means the errormessage 'java.lang.OutOfMemoryError: GC overhead limit exceeded' in Java? 规格严格
    如何才能让你的SQL运行得更快
    如何才能让你的SQL运行得更快
    关于-非法的xml字符
  • 原文地址:https://www.cnblogs.com/nsky/p/3287365.html
Copyright © 2020-2023  润新知