Javascript JQuery屏蔽输入插件不';行不通
我已经在我的Web项目中添加了一个JQuery屏蔽输入插件,但它根本不起作用 该插件可在此处找到: 我已经将JQuery库和屏蔽输入插件包含到我的JSP中,并为我的Javascript JQuery屏蔽输入插件不';行不通,javascript,jquery,masking,Javascript,Jquery,Masking,我已经在我的Web项目中添加了一个JQuery屏蔽输入插件,但它根本不起作用 该插件可在此处找到: 我已经将JQuery库和屏蔽输入插件包含到我的JSP中,并为我的html元素调用了mask函数: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- JS ---> <script src="js/
html
元素调用了mask
函数:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- JS --->
<script src="js/jquery-1.11.0.js"></script>
<script src="js/masked-input-jquery-1.3.1.js"></script>
<title>Test</title>
</head>
<body>
<script type="text/javascript">
$("#name").mask("99/99/9999");
</script>
<form id="" method="" action="">
<div>
<label for="name">
Name<b style="color: red">*</b>
</label>
<input name="studentName" maxlength="255" autofocus="autofocus" type="text" id="name"/>
......
试验
$(#name”).mask(“99/99/9999”);
名字*
......
当我访问JSP时,甚至在文本字段上键入任何内容之前,Chrome控制台上会显示以下内容:
未捕获引用错误:未定义iMask
你能帮我吗?代码有什么问题吗?您需要将jQuery包装在document.ready中,正如一些人已经提到的那样。您还需要调整遮罩以匹配所需的输入。我想你只需要字母字符。你可以举一个这样假设的例子 如果需要字母数字,只需将“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");
});
还应该说,使用屏蔽输入插件可能不是验证名称的最佳选择,因为它用于固定宽度的输入。如果要验证不同长度的alpha字符,请考虑做类似的事情。 这可能会也可能不会解决您当前的问题,但是您对.mask的调用将无法工作,因为它在解析页面的其余部分(输入字段所在的位置)之前运行 您需要将调用包装到jQuery document ready函数中:
$('document').ready(function() {
$("#name").mask("99/99/9999");
});
这告诉脚本等待页面加载到足以让浏览器了解文档中输入字段的程度
作为补充说明,最佳做法是将所有脚本标记(除某些例外)放在结束正文标记之前。
否则,您应该将脚本标记和其他标记一起移动到头部。这是因为jQuery已经下载,但还没有准备好。试一试
$(function(){
// your code goes here
});
我认为它不会解决您当前的问题,但您对.mask的调用将无法工作,因为它在解析页面其余部分之前运行。您需要将调用包装在jQuery document ready函数中:$(document).ready(函数(){…您的代码在这里…});包装在document.ready中实际上可以解决问题。jQuery和mask插件已经执行了,因为它们在头部。但当您执行$('#name').mask(…)时,它不会选择任何内容。在文档准备就绪之前调用插件上的.mask可能意味着mask尚未加载所需的所有内容。即使您没有收到该错误,它仍然不起作用,因为您需要$(“#name”)来选择尚未创建的dom元素。@HJ05您应该将其作为答案发布,以便OP可以接受并投票。是的,我完成了调用,它工作得非常好!奇怪的是,错误消息(“uncaughtreferenceerror:iMask未定义”)仍然出现在控制台上。但它现在工作得很好。谢谢你,伙计,谢谢你,我的朋友。事实上,我还想使用JQuery/Javascript插件验证输入字段(姓名、日期、电话号码、SSN等)。你知道一个好的插件吗?你正在使用的插件实际上非常擅长强制执行日期/电话号码和SSN,因为这些都是固定宽度的。但是看看其中的一个:或者