我使用以下函数从keyup上的输入字段中删除非数字字符(在很多地方发布)。该功能适用于文本输入,但链接到数字输入时,输入非数字字符时,数字输入将被完全删除。
思想?
function RemoveNonNumeric(e)
{
var el = e.target;
el.value = el.value.replace(/\D/g,"");
return;
}//end RemoveNonNumeric
答案 0 :(得分:1)
当数字输入字段中存在非数字字符时,会发生什么...该值变为空。解决此问题的一种方法是保存最后的真实数值,并将当前值替换为该值,如果它变为空值。看起来有点hacky,但看看它是否适合你:
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
function RemoveNonNumeric(e) {
if (e.which < 48 || e.which > 57) {
e.preventDefault();
}
};
答案 1 :(得分:0)
如果进行调试,您会发现当number
输入的值无效时,el.value
将返回一个空字符串。我不知道一种解决方法。