javascript - 检测非数字字符的功能不起作用

标签 javascript html function slice html-input

我有这个 JavaScript 函数:

   function a(elem) {
  b = elem.value;
  c = b.substring(b.length - 1);

  if (c !== '1' && c !== '2' && c !== '3' && c !== '4' && c !== '5' && c !== '6' && c !== '7' && c !== '8' && c !== '9' && c !== '0' && c !== '.') {
    elem.value = b.slice(0, -1);
  }
};

该函数将应用于数字输入,如下所示:

<input type='number' onkeyup='a(this)'/>

该函数的重点是检测输入中是否有非 0-9 的字符或句点,如果有,则应该将该输入的值设置为原来的值,减去最后一个字符(非数字字符)。

我的问题是,它不是用新字符串替换输入的值,而是简单地清除输入。知道为什么吗?你能找到解决办法吗?任何帮助将非常感激。谢谢!

附注请只提供常规 JavaScript 答案。没有 jQuery,如果你不介意的话。

注意

这可能与输入的类型是数字输入有关。不幸的是,除非绝对必要,否则需要保持不变。

编辑#2

我已经缩小范围,发现问题是由输入类型=数字引起的。这很奇怪,因为像这样设置输入的值

document.getElementById('myinput').value='68'; 

工作正常

最佳答案

您将最后一个字符删除两次。首先是

b = b.substring(0, b.length - 1);

再次:

elem.value = b.slice(0, -1);

执行其中之一,但不能同时执行两者。

function a(elem) {
  b = elem.value;
  c = b.substring(b.length - 1);

  if (c !== '1' && c !== '2' && c !== '3' && c !== '4' && c !== '5' && c !== '6' && c !== '7' && c !== '8' && c !== '9' && c !== '0' && c !== '.') {
    elem.value = b.slice(0, -1);
  }
};
<input type='text' onkeyup='a(this)'/>

关于javascript - 检测非数字字符的功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32513612/

相关文章:

java - JSP、JavaScript 中的可选表

python - 在 Python 中返回多个参数

javascript - 来自 Javascript 的 C 中的 Emscripten OOB 异常

javascript - 如何使用接口(interface)在 typescript 中添加两个数字

javascript - 添加两个 JavaScript 函数

html - 段落文字溢出页面

python - 从函数返回列表和整数的最佳方法是什么?

function - 如何更有效地编写此Powershell函数?

javascript - 使用javascript将文本文件读入变量

javascript - EmberJS - 根据索引设置事件