【问题标题】:Firefox 4.01 ignoring everything after jQuery "event.preventDefault()" call in form elementFirefox 4.01 在表单元素中调用 jQuery“event.preventDefault()”后忽略所有内容
【发布时间】:2011-05-05 19:46:14
【问题描述】:

我有一个网页,它通过 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() 失败?谢谢你的建议。

【问题讨论】:

  • event.preventDefault(); 更改为return false 不可行吗?这样你就不需要event 声明了。
  • 这在 Chrome 中有效的唯一原因是你在那里选择了window.event

标签: javascript jquery firefox firefox4


【解决方案1】:

event 不是为绑定处理程序自动定义的。这是第一个论点。我想你的意思是:

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

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

【讨论】:

  • 不用担心。有时我们都太接近代码了。好代表!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    试试:

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

    【讨论】:

      猜你喜欢
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多