我正在尝试实现一个自定义验证功能,该功能要求一组字段全部填充或为空。我用了this answer一切似乎都有效 我在本地运行它。当我将它放在 tomcat 服务器上并从 servlet 呈现时,在 IE7 中运行时出现以下错误,在 Firefox 中它在两种情况下都工作正常。
'this.0.form' is null or not an object jquery.validate.js line 97
您可以找到验证插件 here .相关代码如下。它进入注释行中的错误。
/*
* Form Validation
*/
$.validator.addMethod("notEmpty", function (value, element) {
return value !== "";
}, "This value cannot be empty");
$.validator.addMethod("all", function (value, element, options) {
var row = $(element).closest(options[1]);
var empties_in_group = $(options[0], row).filter(function() {
return $(this).val() === "";
}).length;
//Either all have to be empty or filled
var valid = empties_in_group === 0 || empties_in_group === $(options[0], row).length;
if (!$(element).data('reval')) {
var fields = $(options[0], row);
fields.data('reval', true).valid(); //Error happens in this line
fields.data('reval', false);
}
return valid;
}, "Either none or all fields in this section have to be filled");
$.validator.addClassRules({
percentage: {
digits: true,
min: 0,
max: 100
},
cpu_util: {all: [".cpu_util", 'tr']},
cpu_load: {all: [".cpu_load", 'tr']},
disk_used: {all: [".disk_used", 'tr']},
disk_cons: {all: [".disk_cons", 'tr']},
time_field: {all: [".time_field", 'li']},
log_msgs: {all: [".log_msgs", 'li']},
log_unchng: {all: [".log_unchng", 'td']},
log_ex: {all: [".log_ex", 'td']},
mem_free: {all: [".mem_free", 'tr']},
mem_used: {all: [".mem_used", 'tr']},
cpu_mem: {all: [".cpu_mem", 'tr']},
cpu_util: {all: [".cpu_util", 'tr']},
swap: {all: [".swap", 'tr']}
});
有什么想法吗?
编辑:文件在标题中加载:
<head>
<link rel="stylesheet" type="text/css" href="<rootfolder>/css/style.css"/>
<script type="text/javascript" src="<rootfolder>/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="<rootfolder>/js/jquery.timebox.js"></script>
<script type="text/javascript" src="<rootfolder>/js/jquery.validate.js"></script>
<script type="text/javascript" src="<rootfolder>/js/jquery.qtip.min.js"></script>
<script type="text/javascript" src="<rootfolder>/js/script.js"></script>
</head>
脚本js中的Javascript是这样加载的:
$(document).ready(function() {
<JQUERY AND JAVASCRIPT THINGS>
});
编辑 2:我也尝试在 body 底部使用 javascript,但它仍然有同样的错误。
最佳答案
jquery 不在服务器端呈现。原始 javascript 文件被推送到客户端,客户端浏览器执行您编写的任何代码,所有这一切都无需服务器的帮助。
所以除非 tomcat 在将代码发送给客户端之前实际上重写了代码,否则我严重怀疑这是因为服务器端问题。
关于jquery - 在 IE7 中的服务器上呈现时出现奇怪的 JQuery 验证错误 ('this.0.form' 为空或不是对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075550/