作者kerash (烽火連天依山盡)
看板Ajax
標題Re: [問題] 當input的type=password時的問題
時間Sun Mar 18 21:19:37 2012
※ 引述《pa015596 (sdfgdgf)》之銘言:
: 請問當input的type為password時
: Keyboard Events 是否皆無作用(不會觸發)
: CODE如下
: <input type="password" name="user_passwd"id="pw" onkeydown="check_pw()>
: 不管我按下什麼鍵都不會呼叫check_pw()
: 但是當type="text"時確定可行
: 請高手幫忙 謝謝
剛剛測了一下,用
<input type='password' id='pwd' onclick='alert("ok")' />
可以跑
但用 <input type='password' id='pwd' onclick='func()' /> 就不行
所以改用
window.onload = function() {
document.getElementById("pwd").onkeydown = check_pw; //刊正
}
的方式來做就可以成功了
(上面的 code 有點略寫,不過意思大概就是這樣)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.186.193
1F:推 s25g5d4:這樣能成功才有鬼...check_pw後面不能接() 03/18 21:46
2F:→ kerash:樓上,你想勘正口氣有需要這麼衝啊? 我都說是略寫了 03/18 22:00
3F:→ s25g5d4:阿..抱歉@@" 03/18 22:01
4F:→ kerash:我原始測試時寫的是 onkeydown = new function() { 03/18 22:01
5F:→ kerash:check_pw(); } 這樣應該是可以跑了吧?? 因為當時是想測試 03/18 22:01
6F:→ s25g5d4:只是我認為有些人可能直接copy過去了 然後失敗= = 03/18 22:01
7F:→ kerash:帶參數 03/18 22:01
8F:→ kerash:恩,沒關係,只是我覺得沒人回答結果一回答就是這種回復 03/18 22:02
9F:→ kerash:那解答的人會變得不想解了 03/18 22:02
10F:推 cjoe:樓上兩位都是本版的大好人 :D 和氣和氣 03/18 22:03
11F:推 pa015596:感謝大大的回覆 又學到一招了 03/18 23:37
12F:→ TonyQ:我覺得s25的意見有道理,略寫觀念也要對,錯誤的答案比不回 03/19 09:06
13F:→ TonyQ:答還害人浪費時間。 03/19 09:06
14F:→ TonyQ:你這樣寫的確有觀念上不夠清楚甚至容易讓人混淆的地方 03/19 09:08
15F:→ TonyQ:另外解答是個人意願,觀念是有可能會害到人的,人家幫你指正 03/19 09:09
16F:→ TonyQ:是幫你,而且從你寫new Function 看起來你fn用的也還不多, 03/19 09:10
17F:→ TonyQ:先問範例對錯再論語氣吧。 03/19 09:11
18F:→ TonyQ:晚點再補一篇說明。 03/19 09:11
19F:→ TonyQ:真正的寫法是 onkeydown=check_pw; 這樣才是把函數綁定 03/19 09:16
20F:→ TonyQ:onkeydown=check_pw();是把函數執行完的結果綁定,如果 03/19 09:18
21F:→ TonyQ:check_pw() 不是回傳 function ,那有寫等於沒寫。 03/19 09:19
22F:→ TonyQ:略寫或虛擬碼是建立在觀念正確的狀況下.... 03/19 09:20
不好意思我用 E 文回覆
先說明我不會是糾正我解答我會不高興的人
js 我熟我自己會使用的部分,我自知沒像 TonyQ 大你學的多
如果願意糾正答案我也接受像你提供整個範例或指出原因
而不是一回答就像把整個答案否定掉。
確實我熟的不多,我不是專職 js ,比不上這邊很多人我相信
但我相信比起覺得問題簡單而不答,不如有人回答然後再補充討論會來的好
僅於此.
另我原始是寫 new Function 跑沒錯
但最後我是改為 onkeydown = func_name;
只是確實忘記把 () 刪除而已
不過我相信這樣還是有缺漏之處,請見諒了
※ 編輯: kerash 來自: 114.34.30.6 (03/19 09:40)
23F:→ TonyQ:1.我並不覺得這裡的人有因為問題簡單而不答 03/19 10:16
24F:→ TonyQ:2.如果回答的方向是錯的,慎制式有誤導之嫌的,如果我是你 03/19 10:16
25F:→ TonyQ: 我會覺得很慚愧並且感謝更正我的人。 03/19 10:17
26F:→ TonyQ: *甚至是 03/19 10:17
27F:→ TonyQ:一個錯誤的答案可能會讓使用者測試浪費超過一兩個小時, 03/19 10:17
28F:→ TonyQ:就只是因為它相信你的答案,給出答案時要盡量小心。 03/19 10:17
29F:→ TonyQ:3.一般而言,我們不會用 new Function,因為這樣會建出新的 03/19 10:18
30F:→ TonyQ: function instance,建議是用 function(){} 定義就好 03/19 10:20
31F:→ TonyQ: 有用到 new 的時機通常是 1. 我有需要利用 prototype 03/19 10:20
32F:→ TonyQ: 2. 我有需要用到 "this" 03/19 10:20
33F:→ TonyQ:我並不是在批評你的善意,你出發點是好的;只是給出程式碼 03/19 10:22
34F:→ TonyQ:之前稍微測試一下,並沒有這麼難,你多花個五秒鐘,使用者 03/19 10:22
35F:→ TonyQ:可能就可以少測試個一小時。 03/19 10:23
36F:→ TonyQ:而這些話也是以前同樣有人跟我說過的,我只是傳承下去。 03/19 10:25
37F:→ kerash:其實我有測試過了,就是因為測試成功才丟出來,只是就多了 03/19 11:20
38F:→ kerash:那個()沒注意到,如果說這個解答只是筆誤也像是整個錯的話 03/19 11:20
39F:→ kerash:那就代表我測試都是錯的,而不會正常執行。 03/19 11:21
40F:→ kerash:我純粹想表達的是勘正回答的態度不用這麼急,我知道s是出 03/19 11:23
41F:→ kerash:於好心,但是為了解答我也是測試並且找過一些資料來幫忙回 03/19 11:24
42F:→ kerash:答,而不是只是按ctrl+y 就直接 post 03/19 11:25
43F:→ kerash:tony大你說的那些我知道,但如果我個人身為發問,只要有方 03/19 11:25
44F:→ kerash:向,總比發問後石沉大海來的好。 但這也是我個人想法罷了 03/19 11:26