Jquery允许在字母数字验证中使用空格
Jquery allow spaces in alpha numeric validation
我正在尝试用jquery对文本框值进行验证,以确保文本框只接受字母数字值。我也试图在单词之间留出空格。我不想在文本框中的句子左右两边留空格。如何在文本框中的单词中间留出空格?
我的踪迹搅乱
$('#dsTest').keyup(function() {
if (this.value.match(/[^a-zA-Z0-9]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
}
});
如果只使用keyup
,您将无法优雅地完成这项工作,因为在输入句子的过程中,您刚才输入的空格(希望它位于中间)位于末尾。
相反,我会做这样的事情:
$('#dsTest').keyup(function() {
if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
}
});
$('#dsTest').focusout(function() {
this.value = this.value.trim();
});
允许在键入过程中键入空格,并在以后某个合理的时间点用String.trim()
去掉前导空格和尾随空格。在我的示例中,我使用.focusout()
,但您也可以在使用该值时进行修剪。
这是一个更广泛的验证问题类别的例子,在该类别中,输入WHILE输入的测试会阻止用户输入一个一旦输入就合法的值,因为每次输入一个字符需要该值暂时处于无效状态。有两种主要的方法来处理这个问题:
- 在用户输入完值之前,不要进行验证测试
- 标记无效值而不是更改它们
您也可以将两者结合起来,例如,在用户键入时高亮显示字段以显示当前值无效,然后如果用户在无效值仍然存在时离开字段,则也可以修复该值以使其有效。
在纯正则表达式中,这应该适用于/^[a-zA-Z0-9]+[a-zA-Z0-9's]*[a-zA-Z0-9]+$/g
。请注意,这将需要在值中至少包含2个字符。如果你也想让它为空,那么你可以做/^([a-zA-Z0-9]+[a-zA-Z0-9's]*[a-zA-Z0-9]+|)$/
。
话虽如此,正如其他答案所提到的,在可用性方面,只修剪值可能会更好,因为如果用户意外添加了前导或尾随空格,这不会阻止用户向前移动。
相关文章:
- 仅在jQuery验证中验证数字、括号和空格
- 仅当后面跟着字母表时才允许使用空格字符的验证
- regex验证允许尾随空格
- 用于 HTML 表单验证的正则表达式在没有空格的情况下开始
- 使用 javascript 验证空格
- 表单验证 - Javascript 删除空格电话号码
- 动态验证输入框是否有空格或是否为空
- 引导验证器.正则表达式没有空格
- 如何验证字母数字输入之间的空格
- 只允许字母和空格-jquery验证插件
- 仅验证空格的文本框
- 如何验证通过JavaScript正则表达式仅输入的字母和空格
- 验证数字并允许空格
- 根据空格验证文件名的正则表达式
- 验证文本区域是否允许输入数字、逗号、点和空格
- 如何阻止多个空格清除表单验证
- 如何验证html文本框不允许特殊字符和空格
- 用逗号和空格表示验证号的正则表达式
- Javascript:只验证alpha和空格
- 使用事件.用来验证用户按下空格键是否在Firefox中不起作用