最近遇到這個問題,感覺挺神奇地~先描述一下問題的情境:
製作了一個 login 的組件,並將其引入至頁面中。組件組成非常簡單,一個帳號欄、一個密碼欄。輸入框欄位有監聽 input 事件 (bindinput="handleInputKeyIn"
),輸入時會一邊檢查是否有值,若兩欄都有值,則按鈕亮起。
之後在輸入用戶號時會跳出此錯誤,表示在頁面中抓不到要觸發的方法。搜尋此問題大多會得到以下三個解法:
- 正確使用
Page()
註冊頁面 - 確認有建立該方法
- 在 app.json 中調整頁面註冊順序
對此我只能深表遺憾,因為我是使用組件並引入,所以基本上方法都不太適用。而且我還發現,密碼的欄位是可以正常觸發的。
經過多次測試,最後發現,似乎是輸入法的問題所導致。如果使用的是會自動校正單詞的輸入法,輸入的字會有下底線,此時 key in,都會觸發 input event,並取得 handler not found 錯誤。或許這也正是密碼欄位可以正常觸發的原因。
由於最後沒有找到更好的解法,暫時以 bindblur
做 workaround。如果有更好的方法,敬請不吝告知~