2013-07-01 76 views
1

我正在提交表单异步。因此,我不希望页面重新加载,因此在处理程序中放置了一个preventDefault调用,但它仍然在提交时重新加载页面。 据我读其他主题,这应该足以禁用页面重新加载,但显然,我失去了一些东西。防止表单重新加载QWebView

$("#loginForm").submit(function(event) { 

    try { 
     event.preventDefault(); 
     // Some async handling 
    } catch(ex) { 
     alert(ex); 
    } 
    return false; 

}); 

有人能指出我的方法中的问题吗? 整个事情发生在QtWebkit控件中。

编辑:

现在也尝试:

$("#submitButton").on("click", function(event) { 
    try { 
     // Some async handling 
    } catch(ex) { 
     alert(ex); 
    } 
    return false; 
}); 

由于没有不同的结果。

+3

您的处理程序是否在运行? – SLaks

+0

你准备好DOM吗? –

+0

@SLaks是的,登录工作正常。 – abergmeier

回答

0

return false;event.preventDefault();按预期工作。看到这个Fiddle。你的事件处理程序可能有问题。

$("#loginForm").submit(function(event) { 
    try { 
     // Some async handling 
    } catch(ex) { 
     alert(ex); 
    } 

    event.preventDefault(); // or return false; 
}); 
+0

事件处理程序似乎是查找的,因为alert不是虽然它不起作用 – abergmeier

+0

我想我不明白你的问题,如果你在上面的帖子中尝试了小提琴(http://jsfiddle.net/Px5df/2/),你会发现它的工作原理。如果你删除了带有事件的行。preventDefault(),表单将重新开始重新加载。 –

+0

我不会问这是否是一个简单的问题;)。这里似乎还有其他一些因素。也许特定于QtWebkit。 – abergmeier

0

尝试看,如果登录表单提交被抓事件:

$("#loginForm").submit(function(event) { 
    alert('submit event fired'); 
}); 

如果发射那就试试这个:

$("#loginForm").submit(function(event) { 
    event.preventDefault(); 
    try { 
     //do something in here 
     // Some async handling 
    } catch(ex) { 
     alert(ex); 
    } 
    return false; 
}); 
+0

试过了,仍然没有重新加载:( – abergmeier

0

如果#loginForm是指的是形式本身(而不是提交输入),那就是你的问题。将事件指向提交输入本身。如果失败,将输入提交更改为一个按钮,这应该肯定有效。

编辑:

改变输入提交按钮:

<button id="submitButton">Submit</button> 

这样没有默认阻止,因为它不是一个表单输入提交。该按钮不会重新加载页面。然后,您只需要将单击事件附加到#submitButton

+0

完成了所有这些,仍然不起作用 – abergmeier

+0

试试我上面做的编辑 –