jQuery表单提交。停止页面刷新仅适用于最新的浏览器

时间:2010-01-22 16:06:37

标签: jquery forms submit

使用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()之外的任何东西。

所以,看看我是否在这里错过了一些小事,或者我正朝着完全错误的方向前进。

2 个答案:

答案 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
  });