我有一个输入字段,用户只能在其中输入数字[0-9]
。
document.getElementById("integer").addEventListener('input', restrictToInteger);
function restrictToInteger() {
this.value = this.value.replace(/[^\d]/g, '');
}
<input type="number" id="integer" />
JSFIDLE演示
问题是:当我输入一个数字(例如,1234
)然后按点()时,或-浏览器会自动删除输入字段的内容(值设置为“”=空字符串)。但是为什么呢?将类型从
number
更改为text
似乎可以解决问题。但是,我失去了输入字段的向上/向下箭头功能。有什么想法吗?
根据Alexandru-Ionut Mihai和natchiketa的答案,我创建了以下解决方案:
document.getElementById("integer").addEventListener("input", allowOnlyDigits);
function allowOnlyDigits() {
if (this.validity.valid) {
this.setAttribute('current-value', this.value.replace(/[^\d]/g, ""));
}
this.value = this.getAttribute('current-value');
}
<input type="number" id="integer" />
我认为浏览器清理输入值的原因是因为带两个点的字符串不是数字。
有关代码的一些更正:
若要接受带小数部分的数字,则需要更改正则表达式。现在,您只需要表示希望接受数字[0-9]而不接受更多字符。
要实现您想要的目标,您需要将/[^\d]/g
更改为/[^\d.]/g
。
document.getElementById("integer").addEventListener('input', restrictToInteger);
function restrictToInteger()
{
this.value = this.value.replace(/[^\d.]/g, '');
}
<input type="number" id="integer" />
HTML4有一个名为onkeypress
的事件。有了该属性,我们可以在不使用其他JS的情况下完成此操作:
html lang-html prettyprint-override"><input type="number" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57">
如果字符串包含以下内容,则该字符串是有效的浮点数: 可选“-”(U+002D)字符。 按照给定的顺序,下列一项或两项: 一个或多个ASCII数字的序列。 一个单一的“。(u+002e)字符。 一个或多个ASCII数字的序列。 “E”(U+0065)字符或“E”(U+0045)字符。 可选“-”(U+002D)字符或“+”(U+002B)字符。 一个或多个ASCII数字的序列。 null 在IE11
问题内容: 我是angularjs的新手。我想知道什么是只允许在文本框中键入有效数字的方法。例如,用户可以键入“ 1.25”,但不能键入“ 1.a”或“ 1 ..”。当用户尝试输入下一个将使它成为无效数字的字符时,他将无法输入。 提前致谢。 问题答案: 您可以尝试使用此指令来阻止将任何无效字符输入到输入字段中。( 更新 :这依赖于对模型具有明确知识的指令,这对于可重用性而言并不理想,请参见下面的可
问题内容: 我有以下html5输入元素: 为什么此输入允许在输入字段中输入字符“ e”?没有其他字母字符可以输入(按预期方式) 使用chrome v.44.0.2403.107 问题答案: 因为这正是规范所说的应该工作的方式。输入的数字可以接受浮点数,包括负号和或字符(其中指数是或后面的数字): 浮点数按以下顺序由以下部分组成: 可选地,第一个字符可以是“ ”字符。 “ ” 范围内的一个或多个字符
问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持CopyPaste,Drag+Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE9以后的所有浏览器 : 现在,您可以使用
html5有数字输入类型,如 在这种情况下,输入时禁用非数字字符。触摸设备中自动显示纯本机数字键盘。 如何强制自由jqgrid字段编辑使用此类型? jgrid列定义为 jqrid是从远程json数据创建的。使用内联和表单编辑和搜索工具栏。这允许输入任何字符。在触摸设备全键盘出现。 如何解决此问题,以便在编辑和工具栏搜索中,此字段显示为属性? 如何指定输入仅为整数或允许小数点?可能是html5验证属