2013-07-01 124 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

試試我上面做的編輯 –