繁体   English   中英

删除类型为“ number”的输入上的非数字会导致数字也被删除

[英]Removing Non-Digits on an Input with type=“number” causes Digits to be removed too

我正在使用以下功能从onkeyup的输入字段中删除非数字字符(如发布在许多地方)。 该功能对于文本输入来说效果很好,但是当链接到数字输入时,键入非数字字符会完全删除数字输入。

思考?

function RemoveNonNumeric(e)
{
    var el = e.target;

    el.value = el.value.replace(/\D/g,"");

    return;
}//end RemoveNonNumeric

当数字输入字段中出现一个非数字字符时,会发生什么……该值将为空。 解决此问题的一种方法是保存最后一个真数字值,如果当前值变为空值,则将其替换为当前值。 似乎有点骇人听闻,但请查看它是否适合您:

的jsfiddle

var lastNumericValue = 0;
function RemoveNonNumeric(e)
{
    if(e.keyCode === 8)
        return;
    var el = e.target;
    if(el.value === "") {
        el.value = lastNumericValue;
    } else {
        lastNumericValue = el.value;
    }
}

再三考虑...如何防止放置非数字值而不是事后将其删除? 运行以下onkeypress

的jsfiddle

function RemoveNonNumeric(e) {
    if (e.which < 48 || e.which > 57) {
        e.preventDefault();
    }
};

如果您进行调试,则会发现当number输入的值无效时, el.value返回一个空字符串。 我不知道解决方法。

暂无
暂无

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

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