0

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

为了接管表单的 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 中没有更新。

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

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

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

4

3 回答 3

5

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

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

注意:我还建议使用除event.

于 2011-05-05T19:47:50.400 回答
1

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

于 2011-05-05T19:48:56.717 回答
1

尝试:

jobJSONConfigurationFormSubmit.live("click", function(evt) {
    evt.preventDefault();
}
于 2011-05-05T19:48:56.890 回答