【问题标题】:JQuery mask not working properlyJQuery 掩码无法正常工作
【发布时间】:2014-08-21 07:09:15
【问题描述】:

我在 jquery 中遇到了掩码问题,我想制作一个允许我输入任何字母 0-n 次的掩码。 我有这样的事情:

$.mask.definitions['@']='[A-Za-z]';
$('#textMask').mask("@@@@@@@@@@");

但我的代码只能插入十个字符。任何人都有一个想法如果当然可能吗?

我在想这样的事情:

$('#textMask').mask("@*");

但这让我可以插入一个字母和一个,不管是什么字符。例如d5等。 简而言之,我想允许用户键入仅包含字母的文本。 例如

abcdEEEE
abRFdas
a
 //empty field
bfdjksgbjfdsgbjklfbjklfgnfljkgbnhlfsdjgnfdlskgnfdsgfhsdlgdf
...

等等

我使用了 JQuery 1.10.3 和插件版本 1.3.1 (http://digitalbush.com/projects/masked-input-plugin/)

【问题讨论】:

  • 假设这个插件使用Regex语法,你试过"@+"吗?
  • 如果我把它改成 "@+" 我可以输入 'leter'+ 例如 a+ A+ b+ g+ 等等。

标签: jquery masking


【解决方案1】:

对于JQuery Mask plugin,如果您在<input> 字段上应用mask 方法,则会自动为其分配maxlength 属性。因此,当您执行$('#textMask').mask("@*"); 时,您会得到类似<input id='textMask' maxlength='2'/> 的信息。为避免这种情况,您可以在掩码上设置 maxlength 属性。另一方面实现0-n次可以使用recursive属性。所以最终接受了 0-n 次的信:

$('#textMask').mask('@', { 'translation' : { '@' : { pattern : /[A-Za-z]/, recursive: true, }}, maxlength : false });

考虑到如果您之前在输入字段上创建了mask,则可能设置了maxlength 属性并指定maxlength : false 不会取消设置此属性(我认为这就像一个错误),所以之前应用@987654336 @ 在你的元素上。

根据评论进行编辑:

您使用的是什么版本的 JQuery 和插件掩码?我使用 1.11.0 的 JQuery 和 1.7.4 的插件掩码并且工作正常检查this jfiddle

希望这会有所帮助,

【讨论】:

  • #albciff 不,我以前没有屏蔽它。我粘贴了您发布的代码,但它不能正常工作,它仍然像我有 $('#textMask').mask('@');而且我只能输入一个字母。
  • @LEEL 这对我有用,检查你的 jquery 和 mask 插件版本。如果您想查看我在答案中添加的 jfiddle 示例。
  • 可能是因为我不使用 html 输入,而是使用 grails 文本字段。 ? #edit 如果我更改为输入,则没有发生任何事情:c
  • 好吧,我对此没有更多的耐心,并将我的 prev 掩码插件更改为您发布的 @albciff。谢谢:)!
  • 我看到你最后的答案编辑,你正在使用不同的掩码插件(raw.githubusercontent.com/digitalBush/jquery.maskedinput/1.3.1/…),如果可能的话,试试igorescobar.github.io/jQuery-Mask-Plugin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2023-02-03
  • 2015-11-13
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多