Javascript 在HTML输入字段中仅将输入限制为数字(-100.00到100.00)

Javascript 在HTML输入字段中仅将输入限制为数字(-100.00到100.00),javascript,jquery,html,Javascript,Jquery,Html,我试图限制html输入字段只接受数字 JS代码在安卓设备上的英文键盘上运行良好,但当我将键盘改为日文时,它开始接受日文字符 (更新:仅解决日语输入问题-未输入小数点) 这是HTML文件 0 这是JS代码 function isNumberKey(evt, control) { if ($(control).attr("isNumeric") == "true") { var charCode = (evt.which) ? evt.which : event.keyC

我试图限制html输入字段只接受数字 JS代码在安卓设备上的英文键盘上运行良好,但当我将键盘改为日文时,它开始接受日文字符

(更新:仅解决日语输入问题-未输入小数点)

这是HTML文件

0

这是JS代码

function isNumberKey(evt, control) {


    if ($(control).attr("isNumeric") == "true") {
        var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57) || charCode == 13)
            return false;

        return true;
    }
};
功能为数字键(evt,控制){
if($(control.attr(“isNumeric”)=“true”){
var charCode=(evt.which)?evt.which:event.keyCode
如果(charCode>31&(charCode<48 | | charCode>57)| | charCode==13)
返回false;
返回true;
}
};

我希望在此输入字段中输入类似于
-12.24
23.78
的内容。对于小数点允许,您可以添加以下条件::| charCode==46

if (charCode > 31 && (charCode < 48 || charCode > 57) || charCode == 13 || charCode == 46 )
希望它有帮助

我想我会这样做:(使用正则表达式)

和我的html:

<input type='text' style='height: 20px;'  name='lmt_c13' id='lmt_c13' isNumeric='true' onblur='updateJudgment(this);' onkeyup='isDecimal(this);' onkeypress='isNumberKey(this);' class='txtCtrl' value='0' />

请尝试一下,并告诉我它是否有效。

请参阅

//将匹配元素集中每个元素的输入限制为给定的inputFilter。
(函数($){
$.fn.inputFilter=函数(inputFilter){
返回此参数。on(“输入键向下键向上键向下键鼠标向下键向下鼠标右键选择上下文菜单下拉”,函数(){
if(inputFilter(this.value)){
this.oldValue=this.value;
this.oldSelectionStart=this.selectionStart;
this.oldSelectionEnd=this.selectionEnd;
}else if(this.hasOwnProperty(“oldValue”)){
this.value=this.oldValue;
this.setSelectionRange(this.oldSelectionStart、this.oldSelectionEnd);
}否则{
此值为“”;
}
});
};
}(jQuery));
//安装输入过滤器。
$(“#intTextBox”).inputFilter(函数(值){
返回/^-?\d*$/.test(值);});
$(“#uintextbox”).inputFilter(函数(值){
返回/^\d*$/.test(值);});
$(“#intLimitTextBox”).inputFilter(函数(值){

return/^\d*$/.test(value)和&(value==“”| | parseInt(value)由于其长度和内容,此答案被标记为低质量。请添加一些解释,说明您的正则表达式如何解决有关Javascript的问题。如果您想了解有关正则表达式的更多信息,请参阅此链接:
    function isNumberKey(control) {
        if ($(control).attr("isNumeric") == "true") {
            var regex = /^[0-9.-]$/;
            var _event = event || window.event;
            var key = _event.keyCode || _event.which;
            key = String.fromCharCode(key);
            if(!regex.test(key)) {
                //alert(key);
                _event.returnValue = false;
                if (_event.preventDefault)
                    _event.preventDefault();
            }
        }
    };

    function isDecimal(control) {
        if ($(control).attr("isNumeric") == "true") {
            var regex = /^[-]?[0-9]+[.]?[0-9]*$/;
            str = $(control)[0].value;
            var _event = event || window.event;
            if(!regex.test(str)) {
                var m = str.match(/^[-]?[0-9]+[.]?[0-9]*/g);
                $(control)[0].value = m[0];
                _event.returnValue = false;
                if (_event.preventDefault)
                    _event.preventDefault();
            }
        }
    };
<input type='text' style='height: 20px;'  name='lmt_c13' id='lmt_c13' isNumeric='true' onblur='updateJudgment(this);' onkeyup='isDecimal(this);' onkeypress='isNumberKey(this);' class='txtCtrl' value='0' />