仅接受数字和短划线字符的输入文本字段
Input text field that only accepts numbers AND the dash character
我正在使用常用的Javascript函数,只允许将数字输入到文本字段中:
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
return true;
}
我称之为按键,它可以防止显示除数字以外的任何内容。我正在尝试更改它,以便它也允许我在文本字段中放置破折号 (-)。破折号键代码是 189,所以我试了这个:
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode != 189 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
return true;
}
认为条件语句会接受破折号字符,但这似乎不起作用。关于为什么会这样的任何想法?感谢您的帮助!
事件,则需要使用短划线/连字符的字符代码 45。
如果您使用的是 keydown/keyup 事件,则需要使用 109 和 189 来覆盖数字键盘中的减号键和(通常)位于 P 键上方的减号键。
if (charCode != 46 && charCode != 45 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
演示:http://jsfiddle.net/J6B7U/
如果您对哪个键码是哪个键码有疑问,函数中的哪个console.log(charCode);
将帮助您进行调试。
(另请注意,捕获键事件不足以防止输入无效数据,因为用户可以使用浏览器的编辑菜单或拖放来更改字段。
试试这个
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode != 45 && charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
在网页中
<input type="text" onkeypress="return isNumberKey(event)">
您希望使用破折号的字符代码,即 45,而不是键码。
此代码仅适用于数字类型
<input onkeypress="return isNumberKey(event);">
<script>
function isNumberKey(evt)
{
var t = (evt.which) ? evt.which : event.keyCode;
return !(t > 31 && (t < 48 || t > 57))
}
</script>
这是我问的时候提出的,所以可能值得在这里补充一点,keyCode
和charCode
被弃用,就像目前一样。
添加检查或实现也接受"-"字符的isNumberKey函数的更好方法是:
const isNumberKey = (event: KeyboardEvent) =>
((event.key.length > 1) || event.key.match(/^'d|-$/))
这样,我们检查允许特殊键执行其功能,同时确保在按下单个字符键时只允许数字。
这不适用于移动设备。例如,当输入类型设置为 "number"
时,Android 上的 Chrome 将调出数字键盘而不是全键盘。您可以尝试改用input type="tel"
。它将允许数字0-9
、-
和()
。它还会在Android上调出拨号盘。尚未在iPhone上测试过。
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 带静态字符e输入的文本框数字和带javascript的负整数
- HTML输入中不可更改的前导字符
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 在每个字符输入后,使密码文本框值可见
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- 每次在输入中键入新字符时更新查询
- 使用dojo按键事件时无法避免最后一个字符输入
- 轻量级 Javascript 表过滤器,以最少的字符输入显示结果
- 在输入框中设置“最小”字符输入抛出 javascript
- 选中textebox上的字母数字或特殊字符输入
- 如何预测DOM按下键是否会导致字符输入
- WebSQL | SQLite -插入"?字符输入数据库
- 用于Alpha数字,无空格和9个字符输入的正则表达式
- 如何防止将无效字符输入到表单中?
- 如何使用javascript或jquery限制字段中字符输入的数量
- jQuery验证给出错误的每个字符输入
- 在某些字符输入角度后显示搜索结果
- 如何将keypress和event.prventDefault()一起用于限制字符输入