我們知道,瀏覽器會保存其信息只有當表單提交,這意味着我們不能return false
或e.preventDefault()
我們所能做的就是讓它數據提交取消它無處無需重新加載頁面。我們可以做到這一點的iframe
<iframe name="" style="display:none" src="about:blank"></iframe>
<form target="" action="about:blank">
<input name="user">
<input name="password" type="password">
<input value="Login" type="submit">
</form>
Demo on JSfiddle (tested in IE9, Firefox, Chrome)
優點在目前接受的答案:
- 短代碼;
- 沒有jQuery;
- 沒有加載服務器端頁面;
- 沒有額外的JavaScript;
- 無需額外的課程。
沒有額外的JavaScript。您通常會附加處理程序到表單的submit
事件發送XHR和不取消它。
JavaScript示例
// for modern browsers with window.fetch
document.forms[0].addEventListener('submit', function() {
window.fetch('login.php', {
method: 'post',
body: new FormData(document.forms[0]))
}).then(function() { /* login completed */ })
// no return false!!
});
無JavaScript的支持
理想情況下,你應該讓不支持JavaScript的形式工作太多,所以刪除target
和設定的動作,將收到您的表單的頁面數據。
<form action="login.php">
,然後簡單地通過JavaScript添加它,當你添加submit
事件:
formElement.target = '';
formElement.action = 'about:blank';
不確定如果我正確理解問題。這是否意味着您將在瀏覽器中加載信息,以便javascript將使用三個輸入框中的信息在一些預加載的數據中執行查找?我看到的一些自動完成實現使用Ajax加載結果。這不適合你的模型,是嗎? – VKen 2013-03-19 22:14:43
在這裏,嘗試一個類似的問題提供的解決方案:http://stackoverflow.com/questions/8400269/browser-native-autocomplete-for-ajaxed-forms – sweetamylase 2013-03-19 22:23:30
@Ven我只是希望瀏覽器對待輸入,就好像他們是已提交表單的一部分,因爲用戶將看到他們以前輸入的值作爲自動填充建議,而不實際提交表單。 – AmericanUmlaut 2013-03-20 07:36:38