JQuery Masked Input插件不起作用

我已经在我的Web项目中添加了一个JQuery Masked Input插件,但它根本不起作用。

该插件可以在这里找到: http//digitalbush.com/projects/masked-input-plugin

我已经将JQuery libray和Masked Input插件包含在我的JSP中,并为我的html 元素调用了mask函数:

       Test    $("#name").mask("99/99/9999");  
......

当我访问我的JSP时,即使在文本字段中输入任何内容之前,Chrome控制台上也会显示以下内容:

未捕获的ReferenceError:未定义iMask

你能帮助我吗? 代码有什么问题吗?

这可能会或可能不会解决您当前的问题,但您对.mask的调用将无法正常工作,因为它会在页面的其余部分(您的输入字段所在位置)之前运行。

您需要在jQuery文档就绪函数中包装调用:

 $('document').ready(function() { $("#name").mask("99/99/9999"); }); 

这告诉脚本要等到页面加载到足以让浏览器知道文档中的输入字段。

作为额外的评论,最佳实践表示将所有脚本标记(有一些例外)放在结束标记之前。 否则,您应该使用其余标记将脚本标记移动到头部。

那是因为jQuery已下载但尚未准备好。 尝试

 $(function(){ // your code goes here }); 

您需要将jQuery包装在document.ready中,正如几位人员已经提到过的那样。 您还需要调整遮罩以匹配所需的输入。 我假设你只想要允许使用字母字符。 这个JSFiddle向您展示了这个假设的一个例子。

如果你想要字母数字,只需用’*’替换’a’。 下面是jQuery代码:

 $(function() { //The # of "a"s you enter depends on your max field input //The "?" makes any character after the first one optional $("#fname").mask("a?aaaaaaaaaaaaaaaaaaaaaaaa"); $("#lname").mask("a?aaaaaaaaaaaaaaaaaaaaaaaa"); }); 

还应该说使用屏蔽输入插件可能不是validation名称的最佳选择,因为它适用于固定宽度输入。 如果你想validation不同长度的字母字符,请考虑做这样的事情。