[英]JSHint “not defined” errors
我具有用于验证联系表单的此函数,但是通过JSHint运行该函数时,出现大量“未定义”错误。 我是一个jQuery菜鸟,我不确定应该如何定义它们。
(function ($, document, undefined) {
$(document).ready(function(){
// Place ID's of all required fields here.
required = ["name", "email", "message"];
// If using an ID other than #email or #error then replace it here
email = $("#email");
errornotice = $("#error");
// The text to show up within a field when it is incorrect
emptyerror = "Please fill out this field.";
emailerror = "Please enter a valid e-mail.";
$("#theform").submit(function(){
//Validate required fields
for (i=0;i<required.length;i++) {
var input = $('#'+required[i]);
if ((input.val() == "") || (input.val() == emptyerror)) {
input.addClass("needsfilled");
input.val(emptyerror);
errornotice.fadeIn(750);
} else {
input.removeClass("needsfilled");
}
}
// Validate the e-mail.
if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email.val())) {
email.addClass("needsfilled");
email.val(emailerror);
}
//if any inputs on the page have the class 'needsfilled' the form will not submit
if ($(":input").hasClass("needsfilled")) {
return false;
} else {
errornotice.hide();
return true;
}
});
// Clears any fields in the form when the user clicks on them
$(":input").focus(function(){
if ($(this).hasClass("needsfilled") ) {
$(this).val("");
$(this).removeClass("needsfilled");
}
});
});
})(jQuery, document);
这是几个例子:
来自表单数据-未定义“必需”。
required = ["name", "email", "message"];
未定义“ i”。
for (i=0;i<required.length;i++) {
并且未定义“电子邮件”。
if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email.val())) {
您应该使用“ var”定义变量:
var required = ["name", "email", "message"];
for(var i...
好吧,这可能最终可能是样式问题。 使用不带var
声明的变量显然意味着您正在使用未声明的变量。 在某些情况下,这样做是为了生成具有全局作用域的变量。 当然,这可以(以更简洁的方式 )通过使用var email;
在所有闭包之外声明变量来实现var email;
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.