Firefox 4.01 忽略 jQuery“event.preventDefault()”之后的所有内容在表单元素中调用

发布于 2024-11-05 08:16:38 字数 1184 浏览 0 评论 0 原文

我有一个网页,它通过 JavaScript 动态生成表单 HTML,并将其倒入 ID 为 jobJSONConfigurationFormdiv 中。

为了接管表单的 Submit 元素 (id jobJSONConfigurationFormSubmit),我调用了 Submit-div 的 live 函数:

jobJSONConfigurationFormSubmit.live('click', function() {
    event.preventDefault();
    var jobSummaryJSONTextareaValue = $("#jobSummaryJSONTextarea").val();
    var jobSummaryJSONObj = null;
    try {
        jobSummaryJSONObj = JSON.parse(jobSummaryJSONTextareaValue);
    } catch(e) {
        alert('This is not a valid JSON string. Please try again with a JSON-formatted string.');
    }
    updateJobSummaryWithJSONObj(jobSummaryJSONObj);
});

updateJobSummaryWithJSONObj() 函数更新页面的数据模型和视图(其他形式和动态生成的 HTML)。

此代码更新了 Chrome 11 和 10 上的模型和视图,但这在 Firefox 上不起作用。 Firefox 4.01 中的数据模型和视图未更新。

如果我在 event.preventDefault(); 行之前添加 alert('foo') ,Firefox 会显示警报对话框,但不会运行其余部分的代码的函数。

如果我在 event.preventDefault(); 行之后添加 alert('foo'),Firefox 不会显示警报或运行函数其余部分中的代码。

我在 Firefox 下的 jQuery 做错了什么,导致 event.preventDefault() 失败?谢谢你的建议。

I have a web page that dynamically generates form HTML via JavaScript and pours it into a div with the id jobJSONConfigurationForm.

To take over the form's Submit element (id jobJSONConfigurationFormSubmit), I call the submit-div's live function:

jobJSONConfigurationFormSubmit.live('click', function() {
    event.preventDefault();
    var jobSummaryJSONTextareaValue = $("#jobSummaryJSONTextarea").val();
    var jobSummaryJSONObj = null;
    try {
        jobSummaryJSONObj = JSON.parse(jobSummaryJSONTextareaValue);
    } catch(e) {
        alert('This is not a valid JSON string. Please try again with a JSON-formatted string.');
    }
    updateJobSummaryWithJSONObj(jobSummaryJSONObj);
});

The updateJobSummaryWithJSONObj() function updates the page's data model and the view (other forms and dynamically-generated HTML).

This code updates the model and view on Chrome 11 and 10, but this does not work on Firefox. The data model and view are not updated in Firefox 4.01.

If I add alert('foo') before the event.preventDefault(); line, Firefox shows me the alert dialog box, but does not run the code in the rest of the function.

If I add alert('foo') after the event.preventDefault(); line, Firefox does not show the alert or run the code in the rest of the function.

What am I doing wrong with jQuery under Firefox, which causes event.preventDefault() to fail? Thanks for your advice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水水月牙 2024-11-12 08:16:38

不会为绑定处理程序自动定义事件。这是第一个论点。我认为您的意思是:

jobJSONConfigurationFormSubmit.live('click', function(event) {
  event.preventDefault();
  ...

注意:我还建议使用 event 以外的名称。

event is not defined automatically for a bound handler. It is the first argument. I think you meant:

jobJSONConfigurationFormSubmit.live('click', function(event) {
  event.preventDefault();
  ...

Note: I'd also suggest using a name other than event.

爱冒险 2024-11-12 08:16:38

从您的代码来看,未定义 event 。尝试将 jobJSONConfigurationFormSubmit.live('click', function(event) { 作为第一行。希望有帮助!

Judging from your code, event isn't defined. Try jobJSONConfigurationFormSubmit.live('click', function(event) { as line one. Hope that helps!

海风掠过北极光 2024-11-12 08:16:38

尝试:

jobJSONConfigurationFormSubmit.live("click", function(evt) {
    evt.preventDefault();
}

Try:

jobJSONConfigurationFormSubmit.live("click", function(evt) {
    evt.preventDefault();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文