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實(shí)現(xiàn)懶加載(無限滾動(dòng))列表方式
這篇文章主要介紹了原生+React實(shí)現(xiàn)懶加載(無限滾動(dòng))列表方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
React中useState原理的代碼簡單實(shí)現(xiàn)
要實(shí)現(xiàn)useState的背后原理,則需要深入了解狀態(tài)是如何在函數(shù)組件的渲染周期中保持和更新的,本文將通過一段代碼簡單闡述useState鉤子函數(shù)的實(shí)現(xiàn)思路,希望對(duì)大家有所幫助2023-12-12
React項(xiàng)目中應(yīng)用TypeScript的實(shí)現(xiàn)
TypeScript通常都會(huì)依賴于框架,例如和vue、react 這些框架結(jié)合,本文就主要介紹了React項(xiàng)目中應(yīng)用TypeScript的實(shí)現(xiàn),分享給大家,具體如下:2021-09-09
解決React報(bào)錯(cuò)Expected an assignment or funct
這篇文章主要為大家介紹了React報(bào)錯(cuò)Expected an assignment or function call and instead saw an expression解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Electron整合React使用搭建開發(fā)環(huán)境的步驟詳解
這篇文章主要介紹了Electron整合React使用搭建開發(fā)環(huán)境,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2020-06-06
React18+TS通用后臺(tái)管理系統(tǒng)解決方案落地實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了React18+TS通用后臺(tái)管理系統(tǒng)解決方案落地實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

