【发布时间】:2013-10-04 16:34:05
【问题描述】:
我无法在文本输入中获得the pattern attribute 以限制为数字。根据the javascript regular expressions list,[d] 或 [0-9] 应该这样做。但是在
<input dir="ltr" type="text" title="Enter numbers only." pattern="[\d]{9}" id="uid" name="1" placeholder="Enter UID" required="'required'" class="required placeholder" minlength="9" maxlength="9" autocomplete="off" />
它对我不起作用(在任何浏览器中)。我必须添加如下 js 验证(为简单起见,基于this post 决定走这条路线):
HTML:
onkeypress='return isNumberKey(event)'
js:
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
我主要想知道是否有办法让模式属性起作用。但也可以随意评论我是否为此使用最佳实践路线。我不想使用 HTML5 <input type="number"/>,因为它还没有得到足够广泛的支持。
【问题讨论】:
-
你试过用
[0-9]{9}代替吗? -
您使用的是什么浏览器和版本? pattern 属性也是 html 并且仅在最新的浏览器中支持(即 IE9 不支持它)。
-
似乎工作正常。我添加了一个 CSS 检查,在无效时给出红色,在有效时给出绿色:jsfiddle.
-
pattern属性的验证不会阻止添加错误信息,但会阻止提交表单。您还可以使用 @Jerry 在他的演示中使用的 CSS 选择器。 -
查看@Jerry 小提琴的更新:jsfiddle.net/bHWcu/1
标签: javascript html regex