在使用EXT做文件上傳時,上傳控件的輸入框需要設置爲只讀,只能通過點擊【瀏覽】按鈕來上傳文件,禁止用戶通過鍵盤鼠標輸入字符,通過設置readonly屬性,輸入框是不允許用戶輸入了,但是發現點擊【瀏覽】按鈕也不響應了,無法上傳文件。
1 html的file研究
在對HTML的file元素做研究,也發現設置readonly會存在同樣的問題,網上查了查資料,可以通過禁用鼠標鍵盤的事件來達到這個效果,代碼如下:
甚至可以繞一點彎,設置一個隱藏的file來到達目的,徹底禁止鼠標輸入,代碼如下:
2 ext的file研究
因此,通過屏蔽ext的file控件的鍵盤和鼠標事件,應該也可以做到只讀效果,但是通過addListerners,添加keydown事件,發現是不起作用的。通過查資料發現,對於Ext.form的命名空間下的所有的控件,起對於鍵盤鼠標的事件,默認是關閉的,我們必須設置【enableKeyEvents: true】,來開啓,然後處理initEvents事件就OK了,示例如下:
3 處理特定鍵盤事件
對於鼠標單擊、移動等等事件,都和Ext.EventObject相關,例如相應鍵盤中按下的A鍵:
不允許用戶輸入大寫字母: