繁体   English   中英

JavaScript将文本字段限制为正数和负数

[英]Javascript limit text field to positive and negative numbers

javascript中有一种方法可以允许用户在文本字段(输入类型为“文本”)中仅输入数字,但可以选择在数字前加上减号吗? (即只有负数和正数)

<input type='text' onkeypress='return numbersOnly(this,event,false,true);'>

function numbersOnly(Sender,evt,isFloat,isNegative) {
            if(Sender.readOnly) return false;       

            var key   = evt.which || !window.event ? evt.which : event.keyCode;
            var value = Sender.value;

            if((key == 46 || key == 44) && isFloat){                
                var selected = document.selection ? document.selection.createRange().text : "";
                if(selected.length == 0 && value.indexOf(".") == -1 && value.length > 0) Sender.value += ".";
                return false;
            }
            if(key == 45) { // minus sign '-'
                if(!isNegative) return false;
                if(value.indexOf('-')== -1) Sender.value = '-'+value; else Sender.value = value.substring(1);
                if(Sender.onchange != null) {
                    if(Sender.fireEvent){
                        Sender.fireEvent('onchange');
                    } else {
                        var e = document.createEvent('HTMLEvents');
                            e.initEvent('change', false, false);
                        Sender.dispatchEvent(e);
                    }
                }

                var begin = Sender.value.indexOf('-') > -1 ? 1 : 0;
                if(Sender.setSelectionRange){
                    Sender.setSelectionRange(begin,Sender.value.length);
                } else {
                    var range = Sender.createTextRange();
                    range.moveStart('character',begin);
                    range.select();                 
                }

                return false;
            }
            if(key > 31 && (key < 48 || key > 57)) return false;
        }

相关问题: HTML文本输入仅允许数字输入

您可以将侦听器(在javascript中)绑定到onKeyUp事件(或最适合您的需求),然后检查用户试图插入的内容。 然后,您可以决定是否让他插入该字符。

注意:您还希望控制复制/粘贴事件,因为用户可以粘贴一些文本而不是编写文本!

用这个。 有用。

https://raw.github.com/SamWM/jQuery-Plugins/master/numeric/jquery.numeric.js

$(document).ready(function(){
    $(".numeric").numeric({negative :true});
});​

尝试以下正则表达式:

/^-?\d+$/

这是我仅对正整数和负整数提出的最佳解决方案

<input type="text" onkeyup="this.value = (this.value[0] === '-') ? ('-' + this.value.replace(/[^0-9]/g, '')) : (this.value.replace(/[^0-9]/g, ''));" pattern="^-?\d+" />

您可以在这里查看它http://jsfiddle.net/4g08ofz6/

模式

pattern="^-?\d+"

只是将值粘贴或拖动时的额外验证层,但请记住,您仍应始终在服务器站点上进行验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM