数字输入验证
Numeric input validation
我正在对输入type='text'
元素进行验证。我已经将paste
和keydown
事件连接起来,以捕获输入并将其限制为数字。keydown
似乎工作顺利,我似乎无法让任何浏览器真正不将文本粘贴到字段中(我看到有一个beforepaste
事件,这可能是问题所在——但它似乎不受Firefox支持。最后,如果值不是数字,我只会将输入消隐。这会导致短暂的闪烁,但似乎有效。
有更干净的方法吗?我是不是错过了什么?有没有办法防止闪烁?我知道HTML5的类型是"数字",但我还没有准备好。
<input type="text" id="number" />
<script type="text/javascript">
$(document).ready(function () {
enableNumericOnlyEntry("#number");
function enableNumericOnlyEntry(object) {
$(object).bind('paste', numericOnlyPaste);
$(object).bind('keydown', null, numericOnlyKeyDown);
function numericOnlyPaste(event) {
var inputText = "";
var element = event.target;
setTimeout(function () {
var text = $(element).val();
if (isNaN(text)) {
$(element).val("")
return false;
}
}, 0);
}
function numericOnlyKeyDown(event) {
// Allow: backspace, delete, tab, escape, and enter
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A/a
(event.keyCode == 65 || event.keyCode == 97) && (event.ctrlKey === true) ||
// Allow: Ctrl+C/c
(event.keyCode == 67 || event.keyCode == 99) && (event.ctrlKey === true) ||
// Allow: Ctrl+V/v
(event.keyCode == 86 || event.keyCode == 118) && (event.ctrlKey === true) ||
// Allow: Ctrl+X/x
(event.keyCode == 88 || event.keyCode == 120) && (event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return true;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
return false;
}
}
}
}
});
我用这个项目创建了一个屏蔽编辑框的字段,你也可以删除它的下划线,这样它看起来就不像屏蔽编辑了。非常易于使用:http://digitalbush.com/projects/masked-input-plugin/
然后你会使用类似$("#box").mask("9999999");和你的好去,工作伟大!
HTML5的<input type="number">
正是您真正想要使用它的地方。如果你使用的浏览器支持它(基本上除了Safari和旧版本的IE之外的所有浏览器),它可以做你想要的一切。
也就是说,为什么不注册一个onpaste处理程序,以便在用户粘贴后将粘贴的内容减少到数字?
相关文章:
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 用于数字输入的正则表达式
- 我应该使用什么正则表达式来验证数字模式
- AngularJs:在数字输入字段中设置验证的条件最小值和最大值
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 敲除:如何对两个数字输入进行双向绑定
- 在数字输入上按回车键时提交
- 如何显示正好 2 位数字的 html 数字输入的输入值
- 仅在jQuery验证中验证数字、括号和空格
- JavaScript 验证文本输入框中的字母和数字的可变序列
- 欧芹.js - 仅验证数字的可选输入
- 如何验证字母数字输入之间的空格
- Angular JS-如何验证数字输入中的位数
- 数字输入验证
- 将数字输入的验证集成到代码的其余部分
- 日期输入和数字输入验证
- Javascript方法检查字符串中的数字(输入数据的验证)
- 如何在javascript中验证数字输入
- 通过JavaScript验证HTML输入中的数字不起作用
- 对 HTML 数字输入行为异常的自定义验证