bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 JavaScript 在 text input 中按到 Enter Key 導致 onblur 事件有問 ...
查看: 6154|回復: 2
go

在 text input 中按到 Enter Key 導致 onblur 事件有問題 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2010-9-2 17:30 |只看該作者 |倒序瀏覽 |打印
這是從一支 PHP 程式內簡化出來可以呈現問題的部分

這個問題應該是網頁內 JavaScript 的事件觸發先後順序所造成的問題
  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  4. <meta http-equiv="pragma" content="no-cache" />
  5. <title>測試</title>
  6. </head>
  7. <body>
  8. F1: <?php echo $_POST['F1']; ?><br />
  9. F2: <?php echo $_POST['F2']; ?><br />
  10. <form name="theForm" method="post" action="">
  11. F1: <input name="F1" type="text" value="A" onblur="setF2()"><br />
  12. F2: <input name="F2" type="text" value="B"><br />
  13. <input type="submit">
  14. </form>
  15. <script language="JavaScript">
  16. function setF2()
  17. {
  18.         document.forms['theForm'].elements['F2'].value = "XXXXXXXX";
  19. }
  20. </script>
  21. </body>
  22. </html>
複製代碼
這是剛開啟網址的畫面
blur-1.png

一般正常輸入順序,焦點進入 F1 然後再進入 F2 接著 Submit 得到的結果畫面
也是正確的結果
blur-2.png

若輸入的狀況是焦點進入 F1 然後直接按下 Enter key 就會 Submit 得到的結果畫面
但卻是錯誤的結果
blur-3.png

需要找個方式來讓 onblur event 的計算結果在 submit 事件觸發之前完成
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

2#
發表於 2010-9-3 14:34 |只看該作者
將下列程式放在 <head></head> 範圍內
  1. <script language="JavaScript">
  2. function stopRKey(evt) {
  3.   var evt = (evt) ? evt : ((event) ? event : null);
  4.   var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  5.   if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
  6. }
  7. document.onkeypress = stopRKey;
  8. </script>
複製代碼
這樣就會讓網頁中所有的 input text object 都忽略掉 Enter key 的輸入
有在 IE8, FF3, Google Chrome 等瀏覽器測試過了

因為 event.target 在 IE 不支援,而 event.srcElement 在非IE 則不支援,所以都要去判定

參考來源 http://www.webcheatsheet.com/javascript/disable_enter_key.php
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

3#
發表於 2010-9-11 00:39 |只看該作者
上面的方法將 text input 的 Enter key 給通殺
不過有時候應用的需求只要管控幾個欄位就好
繼續研究能限定指名 id or name 的方法
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-4-25 08:18 , Processed in 0.015375 second(s), 12 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.