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

时间:2014-05-13 17:56:13

标签: javascript validation

我使用以下函数从keyup上的输入字段中删除非数字字符(在很多地方发布)。该功能适用​​于文本输入,但链接到数字输入时,输入非数字字符时,数字输入将被完全删除。

思想?

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

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

    return;
}//end RemoveNonNumeric

2 个答案:

答案 0 :(得分:1)

当数字输入字段中存在非数字字符时,会发生什么...该值变为空。解决此问题的一种方法是保存最后的真实数值,并将当前值替换为该值,如果它变为空值。看起来有点hacky,但看看它是否适合你:

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();
    }
};

答案 1 :(得分:0)

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