我需要确保某个字段仅在某些默认字母字符之后使用数字,如 XXX-XX-1234 。这里XXX-XX-是不应删除的默认字符。在这些字母后,我希望用户无法输入除数字之外的任何字符。
有没有一种巧妙的方法来实现这一目标?
答案 0 :(得分:2)
您也可以使用输入正则表达式模式
<input type="text" name="my_name"
pattern="[A-Za-z]{3}-[A-Za-z]{3}-[A-Za-z]{3}-[0-9]{4}" title="my title">
在您的情况下(删除号码)
<input type="text" name="my_name" value="ABC-DE"
pattern="[A-Za-z]{3}-[A-Za-z]{2}-" title="my title">
答案 1 :(得分:2)
这是FIDDLE
我希望我能够对@scaisEdge的回答发表评论,因为我刚刚建立它以添加一些更有帮助的东西,但它太多了,不适合评论:
HTML:
<form>
<button>submit</button>
<input type="text" name="name1" value="ABC-DE-" pattern="[A-Za-z]{3}-[A-Za-z]{2}-\d{4}$" title="LLL-LL-DDDD - L is any letter, D is any digit" />
<input type="text" name="name2" value="XXX-XX-" pattern="XXX-XX-\d{4}$" title="XXX-XX-DDDD - D is any digit, rest as is" />
</form>
&#13;
我以他的答案为基础,然后做了以下事情来说明更多:
什么不该做
我花了很多时间&#34;滚动我自己&#34;用于制作文本输入版本的代码,该文本输入特别限制了前面的所有操作(在输入更改,keydown,keyup,鼠标单击时),只允许输入最后4位数字而不是其他任何内容。它变成了一个追逐角落案例的游戏&#34;我很快就确信使用经过开发者社区彻底审查的插件或库是这种努力的方法,或者使用上面讨论过的模式属性。
不仅是&#34;垂直导向&#34;对于这种特定的模式,我甚至在经过很长时间才能解决所有角落的情况后仍然失败了。
我甚至对这些困难做了解释,并在这个答案中提出了代码和我的FIDDLE,但意识到在StackOverflow上放置破碎的代码并不是一个好主意,所以我现在做了相应的编辑来重做这个解释并摆脱我试过的替代路线的FIDDLE和代码。