Input標(biāo)簽自動(dòng)校驗(yàn)功能去除實(shí)現(xiàn)
自動(dòng)校驗(yàn)
注:以下輸入框包含input、textarea
事情是這樣的,上個(gè)星期,接到了一個(gè)需求,要求去除掉項(xiàng)目中的輸入框的自動(dòng)拼寫檢查功能,也就是下圖出現(xiàn)的紅線,這個(gè)檢查是瀏覽器自帶的
解決方法
其實(shí)是有解決方法的,而且也不難,很簡(jiǎn)單,只需要在輸入框標(biāo)簽上加上一個(gè)屬性spellcheck=false
即可,也就是:
<input spellcheck=false /> <textarea spellcheck=false />
解決思路
但是問題來了,我需要給全局的輸入框標(biāo)簽都加上才行,由于本項(xiàng)目是使用了antd-design這個(gè)組件庫(kù),那我們來看看整個(gè)項(xiàng)目都有哪些組件包含了輸入框標(biāo)簽?zāi)兀?/p>
1、Input:包含input
2、Select:包含input
3、InputNumber:包含input
4、Textarea:包含textarea
多種解決方法
1、ConfigProvider
ant-design官方提供了一個(gè)組件,可以用來為全局的組件進(jìn)行統(tǒng)一配置,這個(gè)組件可以傳入一個(gè)input
的參數(shù),即可配置全局的Input標(biāo)簽
也就是:
<ConfigProvider input={{spellCheck: false}}> </ConfigProvider>
由于這個(gè)配置只針對(duì)全局的Input,所以結(jié)果都有哪些組件成功去掉了拼寫校驗(yàn)功能呢:
- 1、Input:?
- 2、Select:?
- 3、InputNumber:?
- 4、Textarea:?
2、修改defaultProps
大概的思路就是,修改ant-design的源碼中的input這一部分,給Input、Textarea
這些組件加上一個(gè)defaultProps,這個(gè)defaultProps長(zhǎng)這樣:
const defaultProps = { spellCheck: false }
所以具體實(shí)現(xiàn)為以下代碼
// Input import Input from 'antd/es/input'; Input.defaultProps = { ...Input.defaultProps, ...defaultProps, }; export default Input // Textarea import TextArea from 'antd/es/input/TextArea'; TextArea.defaultProps = { ...TextArea.defaultProps, ...defaultProps, }; export default Textarea
結(jié)果就是,全局的Input、Textarea都去除了拼接檢查了,但是Select、InputNumber卻沒有去除,因?yàn)樗麄兪且蕾嚵?strong>RCSelect、RCInputNumber這兩個(gè)另外的組件,所以想改這兩個(gè),就得去改他們兩依賴的組件,所以結(jié)果就是:
- 1、Input:?
- 2、Select:?
- 3、InputNumber:?
- 4、Textarea:?
3、攔截React.createElement
我們都知道在React中,只要涉及到JSX語(yǔ)法,最終在解析時(shí)都會(huì)通過React.createElement方法來創(chuàng)建標(biāo)簽
所以思路就是在最終調(diào)用React.createElement時(shí),判斷如果是input、textarea
這兩個(gè)類型的話,就給標(biāo)簽加上spellCheck: false
這個(gè)屬性,具體代碼為
這樣做的結(jié)果是:
- 1、Input:?
- 2、Select:?
- 3、InputNumber:?
- 4、Textarea:?
但是總是覺得直接涉及到React自帶方法的修改,有點(diǎn)不太好。。
4、全局監(jiān)聽input事件
思路就是全局監(jiān)聽input
這個(gè)事件,并在這個(gè)事件里去給觸發(fā)事件的DOM節(jié)點(diǎn)增加spellCheck: false,具體代碼為:
這樣做的結(jié)果是:
- 1、Input:?
- 2、Select:?
- 3、InputNumber:?
- 4、Textarea:?
5、MutationObserver
兼容性比較差,所以不考慮了吧~~~
以上就是Input標(biāo)簽自動(dòng)拼寫檢查功能去除實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Input去除自動(dòng)拼寫檢查的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一文帶你掌握React類式組件中setState的應(yīng)用
這篇文章主要為大家詳細(xì)介紹了介紹了React類式組件中setState的三種寫法以及簡(jiǎn)單討論下setState?到底是同步的還是異步的,感興趣的可以了解下2024-02-02用React Native制作一個(gè)簡(jiǎn)單的游戲引擎
今天給大家分享的是使用React Native制作一個(gè)簡(jiǎn)單的游戲,這個(gè)游戲可以跨平臺(tái)操作,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)React Native游戲相關(guān)知識(shí)感興趣的朋友一起看看吧2021-05-05快速創(chuàng)建React項(xiàng)目并配置webpack
這篇文章主要介紹了創(chuàng)建React項(xiàng)目并配置webpack,在這里需要注意,Create?React?App?requires?Node?14?or?higher.需要安裝高版本的node,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-01-01react中如何使用定義數(shù)據(jù)并監(jiān)聽其值
這篇文章主要介紹了react中如何使用定義數(shù)據(jù)并監(jiān)聽其值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01react用Redux中央倉(cāng)庫(kù)實(shí)現(xiàn)一個(gè)todolist
這篇文章主要為大家詳細(xì)介紹了react用Redux中央倉(cāng)庫(kù)實(shí)現(xiàn)一個(gè)todolist,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09React-Router v6實(shí)現(xiàn)頁(yè)面級(jí)按鈕權(quán)限示例詳解
這篇文章主要介紹了使用 reac+reactRouter來實(shí)現(xiàn)頁(yè)面級(jí)的按鈕權(quán)限功能,這篇文章分三部分,實(shí)現(xiàn)思路、代碼實(shí)現(xiàn)、踩坑記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-10-10