[微信小程序] Do not have [name] handler in current page


最近遇到這個問題,感覺挺神奇地~先描述一下問題的情境:

製作了一個 login 的組件,並將其引入至頁面中。組件組成非常簡單,一個帳號欄、一個密碼欄。輸入框欄位有監聽 input 事件 (bindinput="handleInputKeyIn"),輸入時會一邊檢查是否有值,若兩欄都有值,則按鈕亮起。

之後在輸入用戶號時會跳出此錯誤,表示在頁面中抓不到要觸發的方法。搜尋此問題大多會得到以下三個解法:

  1. 正確使用 Page() 註冊頁面
  2. 確認有建立該方法
  3. 在 app.json 中調整頁面註冊順序

對此我只能深表遺憾,因為我是使用組件並引入,所以基本上方法都不太適用。而且我還發現,密碼的欄位是可以正常觸發的。

經過多次測試,最後發現,似乎是輸入法的問題所導致。如果使用的是會自動校正單詞的輸入法,輸入的字會有下底線,此時 key in,都會觸發 input event,並取得 handler not found 錯誤。或許這也正是密碼欄位可以正常觸發的原因。

由於最後沒有找到更好的解法,暫時以 bindblur 做 workaround。如果有更好的方法,敬請不吝告知~


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *