jquery實現form表單提交后局部刷新頁面的多種方法


最近做一個小項目,剛好需要用到搜索功能,實現搜索框內輸入數據然后按回車或者點擊“提交”,然后給后台數據庫處理並返回數據給前端,在前端局部更新數據。

比如這樣的:
但是遇到了一個小問題,就是form表單下任意輸入框輸入完按回車提交,整個頁面都會刷新,就算我用ajax從后台取出數據返回前端把頁面更新了,整個頁面還是會立馬刷新成原來的樣子。

所以問題又回到了最開始,就是form表單如何實現按回車提交數據處理但不刷新整個頁面。
問題和ajax其實並沒有太大關系。是js部分要進行一定的轉換。

測試代碼(包含jquery靜態庫,有網絡的同學都不用引入jquery庫,可以直接寫進html頁面看效果):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function (){

$("#form1").submit(function () {
$("#show").text("444");
});
$("#form2").submit(function () {
$("#show").text("777");
//中間可以做一些ajax數據交互,讓"777"為后台返回的值
return false;
});
$("#btn").click(function () {
$("#show").text("555");
});
$("#num3").keydown(function(e){ //按下鍵盤觸發函數
if(e.keyCode==13){ //如果按下的是回車
$("#show").text("666"); //處理事件
}
});
})

</script>

</head>
<body>

<form id="form1">
表單一:<input type="text">
<input type="submit" value="在左側輸入框按回車或點擊此按鈕,可以看到文本值333一閃而過為444又回到333">
</form>

<form id="form2">
表單二:<input type="text">
<input type="submit" value="在左側輸入框按回車或點擊此按鈕,可以看到文本值333改為777不變回去">
</form>

獨立輸入框(按回車更新文本為666):<input type="text" id="num3">
<br>

<button id="btn">點擊更改文本值為555</button>
<span id="show">333</span>

</body>
</html>

 

界面:

 

很簡單的一個測試代碼,看一下就知道這些方法了。

首先form不能有action跳轉,有action跳轉是肯定會更新或者跳轉到其他頁面的

方法一:給form表單寫一個submit函數,在最后加一句 return false; //感覺這篇文章看的人還是蠻多的,特地回來加粗一下,這個方法可以解決大部分情況了。
(我的例子里演示了加與不加的區別,如果不加return false;同時用submit函數處理,那么整個頁面還是會立馬刷新,數據改變只是一閃而過)

方法二:不用<input type="submit">的方式,改為設置一個button按鈕,讓用戶通過手動點擊按鈕來實現數據更改。
(這個方法比較不符實際應用,畢竟用戶的搜索習慣都是直接按回車。手要拿到鼠標上點擊一個按鈕費時費力。

方法三:脫離表單,設置一個獨立的輸入框<input>,給這個輸入框設置回車觸發事件。(回車的鍵盤值為13)
(這個方法也是可行的,實際項目中可以用<div>或者<li>把<input>輸入框組給包含起來,給每個<input>設置按下回車的觸發事件,同時提交按鈕也要設置相同的事件。然而輸入框多了的話比較麻煩,畢竟表單還是表單,是要用回車鍵處理的)


以上就是三種不同的解決辦法,大家根據自己實際項目中的應用來選擇。
此問題歸根結底與ajax並沒有直接關系,ajax只是前后端交互的一種手段,最后還是要通過前端來實現數據部分更新的。這個問題是前端的問題。

我覺得我也是太鑽牛角尖了,如果不用form或者直接讓用戶按一個按鈕提交搜索內容不是很輕松就能實現了嗎。我非要實現“按回車即可直接搜索”這個功能,好像太刻板了。。。
有時候,讓使用者麻煩一點還能增加在你的網站的滯留時間,不是嗎?哈哈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM