Firefox 4.01 忽略 jQuery“event.preventDefault()”之后的所有内容在表单元素中调用
我有一个网页,它通过 JavaScript 动态生成表单 HTML,并将其倒入 ID 为 jobJSONConfigurationForm
的 div
中。
为了接管表单的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不会为绑定处理程序自动定义
事件
。这是第一个论点。我认为您的意思是:注意:我还建议使用
event
以外的名称。event
is not defined automatically for a bound handler. It is the first argument. I think you meant:Note: I'd also suggest using a name other than
event
.从您的代码来看,未定义
event
。尝试将 jobJSONConfigurationFormSubmit.live('click', function(event) { 作为第一行。希望有帮助!Judging from your code,
event
isn't defined. TryjobJSONConfigurationFormSubmit.live('click', function(event) {
as line one. Hope that helps!尝试:
Try: