javascript - JQuery 提交函数有时工作

标签 javascript jquery submit

我正在为一个包含使用 jquery 的 jsp 文件的类制作 Web 应用程序。我希望应用程序在提交之前立即触发警报。这有时在我的真实程序中有效,而其他时候永远不会触发警报。我似乎无法确定它总是有效或从不有效的实例。我的错误控制台对此事保持沉默,除非我添加 Firebug 断点。然后它给了我

Error: attempt to run compile-and-go script on a cleared scope
Source File: http://code.jquery.com/jquery-1.7.2.min.js
Line: 2

但是我不知道那是什么意思。就 Firebug 而言,我无法理解为什么评估在警报消息之前停止。

我试图制作一个 sscce 来记录问题,但我猜它与我的真实程序相差太大,因为提交从来没有奏效。我将展示我的真实程序中的一些代码。 (很抱歉缺少SSCCE。)

$(document).ready(function() {
    $("#questionDisplay").submit(function() {
        var correctAnswer = $(".correctAnswer").attr("value");
        var answer = "";

        if ($(".multipleChoice").length > 0) {
            answers = $("input:checked");
            for (var obj in answers) {
                answer += obj.attr("value") + "#";
            }
        } else if ($(".fillBlank").length > 0) {
            for (var answerNo = 1; $(".answer" + answerNo).length > 0; ++answerNo) {
                answer += $(".answer" + answerNo).attr("value") + "#";
            }
        } else {
            answer = $(".answer1").attr("value");
        }

        if (answer == correctAnswer) {
            alert("Yes! Correct!");
        } else {
            alert("Sorry, incorrect.");
        }
    });
});

jsp 是一团糟(我们必须使用 scriplets :( ),但如果你想看它,请告诉我。

如何让我的提交处理程序每​​次都工作?

最佳答案

在您的示例中,answers 是一个 jQuery 元素集合。使用 for(var obj in answers) { } 循环遍历它实际上是循环遍历答案的属性,而不是元素本身。因此,对属性调用 .attr() 是行不通的。

一般来说,如果我看到我的调试器状态为 jQuery 有错误,99.9% 的情况是我在非 jquery 选定对象上调用 jQuery 方法。在这种情况下,我在 Chrome 的 JavaScript 控制台中看到了错误,有时结果可能会因不同的控制台而异。

一个好的做法是在存储 jQuery 元素的变量前加上 $ 以表明它们是 jQuery 对象。例如,$answers 可以更轻松地跟踪它包含的内容。

使用:

answers.each(function() {
     answer += $(this).attr("value") + "#";
});

取而代之的是:

for (var obj in answers) {
    answer += obj.attr("value") + "#";
}

关于javascript - JQuery 提交函数有时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894532/

相关文章:

jquery - jQuery 中的输入字段占位符

javascript - 如何在 jQuery 中更改选择时传递 php 数组?

javascript - 如何防止文本框失去焦点后提交按钮提交

ruby-on-rails - 在 Ruby on Rails-3 中使用 'form_tag' 和命名空间提交表单

php - 基于服务器端逻辑有条件地回显 Javascript 代码是否被认为是有害的?

javascript - 从 Json 对象中检索数据

javascript - mxgraph:我想添加一个按钮来禁用/启用图表和工具栏

javascript - JQuery 似乎无法在 Wordpress 中运行

javascript - 单击警报框 "OK"后表单提交

javascript - 如何使用 JavaScript/Jquery/Knockout JS 将数字数组绑定(bind)到范围 slider