我让我的表单使用 jquery 验证插件工作!感谢 Praveen 的建议。这是一个很棒的工具。
根本的问题是我真的没有把头绕在 .load() 上。一旦我使用了 .load() 回调函数,验证运行良好。我创建了一个名为contact.js 的外部javascript 文件,其中包含嵌套在contactPageScript() 函数中的验证插件规则和submitHandler。我用 .load() 回调调用了contactPageScript(),瞧:
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="js/contact.js"></script>
<script>
$(document).ready(function(){
$("div#menu ul li a").click(function() {
var whichPage = $(this).attr('href');
$('div#page_content').load(($(this).attr('href') + ' #contentB'), function(){
if (whichPage == 'contact.html') {
contactPageScript();
}}
);
});
});
</script>
</head>
当然,验证脚本也可以很好地嵌套在回调函数中,而不是作为外部 .js,但它对我的口味来说太长了。还有一些关于验证规则的小细节需要解决。这是我用作参考的验证代码块:
$(document).ready(function() {
$('#mailform').validate( {
rules: {
fullname: {
required: true,
minlength:2
},
email: {
required: true,
email: true
}
},
messages: {
fullname: 'Please enter a valid name',
email: 'Please enter a valid email address'
},
submitHandler: function(form) {
$.post('php/submitForm.php', $('#mailform').serialize(), function() { DO STUFF });
}
});
});
起初我无法让插件脚本在调试期间工作。注意规则后面的多余逗号!还请注意,某些 copypasta 教程中包含隐藏的无效字符!你永远不会知道!我不得不手动重写整个代码以使其验证!
我后来在回调中添加了嵌套的 if/else 语句,以调用站点上需要 jquery/javascript 的所有其他页面的函数。起初我尝试使用开关而不是嵌套的 if/else,但这并不理想。看说明书很有帮助!
干杯。