- Keywords -
1. 在 input text 按下 enter 等同於按下 button
2. 選取 input text 裡面的文字
在自己的使用習慣上,若有道程序是要我輸入並送出,那我絕對不會輸入完後再用游標去點「送出」button,而是在輸入完後直覺地按下 enter。
每次碰到網頁按下 enter 沒反應的時候都會抱怨一大堆,真正自己要做的時候才知道每個功能都要自己加才有,孩子並不會自己生出來啊~
需求:輸入完答案按enter即可送出
(也就是「在input text 內按下 enter ,會做出如同點下 button 的反應」)
$("#chinese").keydown(function(event) { if(event.keyCode == 13){ checkOut(); }; });
chinese 是我的text id,checkOut() 則是包含中英文比對等內容的 function。
當我在chinese keydown 的時候會開始動作,又如果這個 keydown 是由 enter (keyCode 為13) 所做的,那就會呼叫 checkOut() 這個 funciton。
在這裡我曾經碰到一個問題:這樣寫有用,按下 enter 也確實呼叫了 checkOut(),但為什麼網站卻被 refresh?
整個畫面呈現的就是 在第一題輸入了答案>按下enter>跳下一題>馬上又被重整、回到第一題的畫面。
後、來、才、知、道!我當初的 input text 是用 form 包起來的,而 form 這個表單就是當我 post 後會 refresh,如果我要他在送出之後別做任何反應,那我在 HTML 就要改成
<form onSubmit="return false">
Answer: <input type="text" id="chinese" name="chinese">
</form>
(試了幾種方式結果痞客邦都會把<form></form>給吃掉無法顯示,只好直接貼上來,哭)
在 form 這個 tag 後加 onSubmit,也就不會在 post 之後執行其他動作。
但是這個 text 本來就不需要表單功能,這樣子做其實就等於脫褲子放屁...所以,把 <form></form> 這個 tag 拿掉就好啦!
要做的第二件事情
需求:不管輸入的答案是對是錯,都希望在送出後能夠選取原有的答案,這樣就不用手動刪去上個答案!
$("#chinese").trigger("select");
雖然簡單一行就做到,但若要在「送出之後」再「選取」,就該把這行放在 checkOut() 判斷對錯完之後。(嗯嗯特別畫紅線因為我就犯了這個邏輯的錯)
再三提醒自己,先知道自己需求是什麼,排好順序、有正確的邏輯,才不會打到最後完全不知道自己在幹嘛哈哈哈哈哈(淒涼)。
留言列表