jquery - 在 IE7 中的服务器上呈现时出现奇怪的 JQuery 验证错误 ('this.0.form' 为空或不是对象)

标签 jquery tomcat servlets jquery-validate

我正在尝试实现一个自定义验证功能,该功能要求一组字段全部填充或为空。我用了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/

相关文章:

jsf - 在应用服务器上限时存储 PDF 并提供下载

java - 使用 JQuery Ajax 将表单提交到 servlet

java - 通过java查找服务器互联网带宽以进行流式传输

servlets - 是否有 Java Servlets 的可比替代品?

jquery - 使用 jquery 选择每隔 2 个表行

java - 从 Java 访问 Tomcat 路径

java - 由于后台线程,tomcat 无法重新加载上下文

jquery - Durandal:如何在 shell 激活功能中正确发出 ajax 请求

jquery - ajax post 方法在 vb.net 中不起作用

javascript - jQuery:根据我们选择的数量创建多个输入字段