我在 WordPress 驱动的网站上创建了一个表单。它目前正在使用 RequireJS 向页面元素添加两个按钮,但我也希望 Require 来控制 jQuery Validation 插件中的一些东西。添加按钮工作正常,但遗憾的是,验证不起作用。
表单在 HTML 中如下所示:
<form id="contact" method="get" action="">
<fieldset id="contact-form-fields">
<p>
<label for="form_name" class="form-titles">Name</label>
<input name="form_name" id="form_name" type="text" placeholder="Name" aria-required="true" class="required">
</p>
<p>
<label for="form_email" class="form-titles">Email</label>
<input name="form_email" id="form_email" type="text" placeholder="Email" aria-required="true" value="">
</p>
<p>
<label for="msg_text" class="form-titles">Email</label>
<textarea tabindex="-8" rows="10" placeholder="Type your awesome message here." class="placeholder" name="msg_text" id="msg_text" aria-required="true" class="required"></textarea>
</p>
</fieldset>
<input type="submit" value="Send Your Message" name="submit" class="button">
</form>
RequireJS 像这样附加到页面:
<script data-main="http://livetest.kaidez.com/wp-content/themes/kaidez-2012/js/config.js" src="http://livetest.kaidez.com/wp-content/themes/kaidez-2012/js/require-jquery.js"></script>
上面提到的 config.js 文件是这样的:
require.config({
baseUrl: "http://livetest.kaidez.com/wp-content/themes/kaidez-2012/js",
deps: ['scripts'],
paths: {
jquery: "jquery",
jqueryValidate: "jquery-validate.min"
},
shim: {
jquery: {
exports: "jquery"
},
jqueryValidate: {
deps: ["jquery"]
}
}
});
config.js 说它有一个名为 scripts.js 的依赖项,它看起来像这样:
// code that adds buttons to the page
require(['jquery'], function ($) {
var header = document.getElementById("masthead"),
$navMenu = $("#site-navigation-list"),
$searchBox = $("#searchform"),
menuButton = document.createElement("div"),
searchButton = document.createElement("div"),
showMenus;
$(menuButton).attr("id", "menu");
$(searchButton).attr("id", "search");
header.appendChild(searchButton);
header.appendChild(menuButton);
showMenus = function(btn,el) {
$(btn).click(function() {
if (el.is(":visible") ) {
el.slideUp({
complete:function(){
$(this).css("display","");
}
});
} else {
el.slideDown();
}
});
};
showMenus(menuButton, $navMenu);
showMenus(searchButton, $searchBox);
});
//code that controls jQuery Validate
require(["jquery", "jqueryValidate"], function($, jqueryValidate) {
$("#contact").validate({
rules: {
form_email: {
required: true,
number: true
}
}
});
});
查看其他发布的问题、jsFiddles 等,我似乎找不到答案。我认为我的错误出在我的 RequireJS 设置中,但我不确定。工作开发环境代码在这里。任何帮助表示赞赏。