输入表单中的禁止字符
Forbidden characters in input form?
这是我当前的代码,当用户键入时,它会从输入中删除除$,逗号和点之外的所有非数字字符:
<input type="text" id="price" name="price" onkeyup="updatePrice(this.value)">
function updatePrice(p) {
document.getElementById("price").value = p.replace(/[^0-9$.,]/g, '');
}
问题是它在键入字符后会删除字符,因此如果您键入 A,您会在消失之前看到它几分之一秒。键控不好,因为它在输入实际更改之前运行脚本。
如何完全防止这些禁止字符出现在输入上?
- 使用
onblur
在输入失去焦点时执行验证 - 用户在键入过程中不必意识到这一点。 - 用户完全不必意识到这一点 - 您可以在提交时执行验证。
可以使用按键事件和模糊事件的组合来验证每个键和整个字符串。如果您将输入type
更改为type="number"
则用户代理将负责确保该值在更现代的浏览器中是有效的数字格式。
// on key press occurs before the text is added visually to the input field
document.getElementById('price').addEventListener('keypress', function(e) {
if(!String.fromCharCode(e.which).match(/[0-9$'.,]/)) {
e.preventDefault(); // not a valid character so cancel it
}
}, false);
// complete validation for the text that was entered on blur to update price
document.getElementById('price').addEventListener('blur', function(e) {
var validated = parseFloat(this.value.replace(/[^0-9'.]g/, ''));
// ... use the validated string to do something
}, false);
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 允许在文本框中使用某些字符
- 如何禁止在纯JavaScript形式输入的表单中输入特定字符
- 挖空 JS 网格,禁止绑定语句中的字符
- 输入表单中的禁止字符
- 禁止页面上所有文本区域的字符
- 禁止在按键时插入特殊字符,但允许现有字符
- 在输入了一定数量的字符后,禁止用户在文本区域字段中输入文本
- RegEx禁止字符,除非转义
- 如何禁止在文本框中粘贴特殊字符
- jQuery方法,该方法禁止输入某些字符
- 检测用户输入是否包含JavaScript中的禁止字符
- 如何使用Angular.js禁止只允许字符进入输入字段
- 如何在文本框中使用javascript删除或禁止特定的字符或符号