This jsfiddle demonstrates the following issue.
最简单的示例是:
<input id="number" type="number" value="1">
console.log(document.getElementById('number').value);
这将按预期记录1.但是,这:
<input id="number" type="number" value="1A">
console.log(document.getElementById('number').value);
由于值中包含非数字字符,因此只需记录一个空字符串“”.某些设备浏览器(例如Chrome)允许您在这些输入中输入非数字字符.
这很烦人,因为我要为支持它的设备(例如iPhone,iPad数字键盘)输入type =“ number”.但是我想使用javascript来阻止输入脏输入-这需要获取keyup上的值-然后用正则表达式替换非数字字符.
看来jQuery的.val()方法给出了相同的结果.
解决方法:
这就是我想要的:
$('input[type=number]').keypress(function(e) {
if (!String.fromCharCode(e.keyCode).match(/[0-9\.]/)) {
return false;
}
});
我知道阻止用户输入会很烦人,但这仍然允许无效输入(例如1.2.3)
但是在这种情况下,这正是我所需要的.希望它对其他人有用.感谢@ int32_t的建议.
原文地址:https://codeday.me/bug/20191010/1887647.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。