使用jQuery 1.4执行此操作。
将表单添加到body标签中,表单本身没有什么特别之处:
$(function() {
$('body').prepend('<form name="frmSample" id="frmSample"><input class="btn" type="submit" value="SIGN UP" /></form>');
});
我正在使用以下内容提交表单:
$('#frmSample').live('submit', function() {
var formdata = $(this).serialize();
$.ajax({
type: 'POST',
url: 'http://www.example.com/Values.jsp',
data: formdata,
success:function() {
submit_success();
}
});
return false
});
在最新的浏览器(Firefox 3.5,Safari 4)上,这很好用。一旦我下到FF 3.0及以下或IE 7及以下,这就停止了。
我现在有点卡住了。我一直在寻找一些好的东西,只能找到除了返回false或event.preventDefault()之外的任何东西。
所以,看看我是否在这里错过了一些小事,或者我正朝着完全错误的方向前进。
答案 0 :(得分:3)
我会比stopPopagation更进一步:
$('#frmSample').live('submit', function(e) {
stopEvent(e);
....etc...etc
stopEvent的代码:
function stopEvent(event) {
event.preventDefault();
event.stopPropagation();
if ($.browser.msie) {
event.originalEvent.keyCode = 0;
event.originalEvent.cancelBubble = true;
event.originalEvent.returnValue = false;
}
}
从这里开始:http://www.openjs.com/articles/prevent_default_action/
returnValue和preventDefault()方法
这就是我们需要的 - 但是我们不能依赖return false方法来阻止默认操作。提供此代码将退出函数 - 因此,如果函数中还有更多内容,则无法使用此代码。在我遇到的大多数情况下,返回false就足够了,但在某些方面,我们需要更激烈的东西。
在谷歌中输入以下内容以获取更多信息:
preventDefault stopPropagation cancelBubble
答案 1 :(得分:1)
尝试
$('#frmSample').live('submit', function(e) {
e.stopPropagation();
var formdata = $(this).serialize();
$.ajax({
type: 'POST',
url: 'http://www.example.com/Values.jsp',
data: formdata,
success:function() {
submit_success();
}
});
return false
});