限制文本字段输入仅限数字

时间:2010-01-16 00:40:39

标签: javascript html forms

我搜索过谷歌,但我能找到的所有解决方案都非常复杂和冗长。我需要的是限制我正在进行的调查中的文本字段的输入仅限于数字。什么是最快,最干净的方法?

(我正在使用HTML 4.01严格和ECMAScript)

提前致谢。

3 个答案:

答案 0 :(得分:7)

最快:

<input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')">

这不会阻止人们用鼠标粘贴东西,所以也可能需要改变和onclick。

最干净(或者至少是一种干净的方式):

function forceNumeric() {
    this.value = this.value.replace(/\D/g, '');
}

如果您正在使用JS框架,请​​为所有数字输入提供一个表示事实的类( class =“numeric”或类似的东西),并添加forceNumeric作为回调 keyup 更改点击到该类的任何输入元素:

$('.numeric').keyup(forceNumeric).change(forceNumeric).click(forceNumeric);

如果您正在使用直接JS(我建议不使用直接JS),请使用 element.addEventListener onkeyup onchange onclick

答案 1 :(得分:1)

如果您使用的是jQuery,则可以使用AlphaNumeric plugin。有了这个插件,它将是一个问题:

$('.numeric_field').numeric();

答案 2 :(得分:0)

我们用一个简单的组合解决了这个问题,并坚持使用HTML:

<input type="tel">

使用type tel有两种方式:浏览器验证和在移动设备上显示数字键盘,以获得更好的用户体验。

然后,一个简单的JS验证(jQuery示例):

$('[type=tel]').on('change', function(e) {
  $(e.target).val($(e.target).val().replace(/[^0-9]/g, ''))
})
$('[type=tel]').on('keypress', function() {
  return event.charCode >= 48 && event.charCode <= 57
})

我们最终需要2个功能,一个用于普通用户输入(按键),另一个用于复制+粘贴修复(更改)。