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í)是有解決方法的,而且也不難,很簡單,只需要在輸入框標(biāo)簽上加上一個(gè)屬性spellcheck=false即可,也就是:
<input spellcheck=false /> <textarea spellcheck=false />
解決思路
但是問題來了,我需要給全局的輸入框標(biāo)簽都加上才行,由于本項(xiàng)目是使用了antd-design這個(gè)組件庫,那我們來看看整個(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長這樣:
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語法,最終在解析時(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的三種寫法以及簡單討論下setState?到底是同步的還是異步的,感興趣的可以了解下2024-02-02
快速創(chuàng)建React項(xiàng)目并配置webpack
這篇文章主要介紹了創(chuàng)建React項(xiàng)目并配置webpack,在這里需要注意,Create?React?App?requires?Node?14?or?higher.需要安裝高版本的node,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-01-01
react中如何使用定義數(shù)據(jù)并監(jiān)聽其值
這篇文章主要介紹了react中如何使用定義數(shù)據(jù)并監(jiān)聽其值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
react用Redux中央倉庫實(shí)現(xiàn)一個(gè)todolist
這篇文章主要為大家詳細(xì)介紹了react用Redux中央倉庫實(shí)現(xiàn)一個(gè)todolist,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
React-Router v6實(shí)現(xiàn)頁面級(jí)按鈕權(quán)限示例詳解
這篇文章主要介紹了使用 reac+reactRouter來實(shí)現(xiàn)頁面級(jí)的按鈕權(quán)限功能,這篇文章分三部分,實(shí)現(xiàn)思路、代碼實(shí)現(xiàn)、踩坑記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-10-10

