close

- 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() 判斷對錯完之後。(嗯嗯特別畫紅線因為我就犯了這個邏輯的錯)


再三提醒自己,先知道自己需求是什麼,排好順序、有正確的邏輯,才不會打到最後完全不知道自己在幹嘛哈哈哈哈哈(淒涼)。

arrow
arrow
    文章標籤
    javascript jquery
    全站熱搜

    Ter 發表在 痞客邦 留言(0) 人氣()