当前位置:首页 > 科技  > 软件

为了关闭全局 Input 的自动拼写校验!走了好多弯路

来源: 责编: 时间:2024-06-11 17:53:04 349观看
导读自动校验注:以下输入框包含input、textarea。事情是这样的,上个星期,接到了一个需求,要求去除掉项目中的输入框的自动拼写检查功能,也就是下图出现的红线,这个检查是浏览器自带的。解决方法其实是有解决方法的,而且也不难,很

自动校验

注:以下输入框包含input、textarea。eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

事情是这样的,上个星期,接到了一个需求,要求去除掉项目中的输入框的自动拼写检查功能,也就是下图出现的红线,这个检查是浏览器自带的。eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

解决方法

其实是有解决方法的,而且也不难,很简单,只需要在输入框标签上加上一个属性spellcheck=false即可,也就是:eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

解决思路

但是问题来了,我需要给全局的输入框标签都加上才行,由于本项目是使用了antd-design这个组件库,那我们来看看整个项目都有哪些组件包含了输入框标签呢?eoF28资讯网——每日最新资讯28at.com

  • Input:包含input
  • Select:包含input
  • InputNumber:包含input
  • Textarea:包含textarea
  • body:直接在 body 上加 spellcheck="true"

多种解决方法

1.ConfigProvider

eoF28资讯网——每日最新资讯28at.com

ant-design官方提供了一个组件,可以用来为全局的组件进行统一配置,这个组件可以传入一个input的参数,即可配置全局的Input标签eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

也就是:eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

由于这个配置只针对全局的Input,所以结果都有哪些组件成功去掉了拼写校验功能呢:eoF28资讯网——每日最新资讯28at.com

  • Input:✅
  • Select:❌
  • InputNumber:❌
  • Textarea:❌

2.修改defaultProps

大概的思路就是,修改ant-design的源码中的input这一部分,给Input、Textarea这些组件加上一个defaultProps,这个defaultProps长这样:eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

所以具体实现为以下代码:eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

结果就是,全局的Input、Textarea都去除了拼接检查了,但是Select、InputNumber却没有去除,因为他们是依赖了RCSelect、RCInputNumber这两个另外的组件,所以想改这两个,就得去改他们两依赖的组件,所以结果就是:eoF28资讯网——每日最新资讯28at.com

  • Input:✅
  • Select:❌
  • InputNumber:❌
  • Textarea:✅

3.拦截React.createElement

我们都知道在React中,只要涉及到JSX语法,最终在解析时都会通过React.createElement方法来创建标签:eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

所以思路就是在最终调用React.createElement时,判断如果是input、textarea这两个类型的话,就给标签加上spellCheck: false这个属性,具体代码为:eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

这样做的结果是:eoF28资讯网——每日最新资讯28at.com

  • Input:✅
  • Select:✅
  • InputNumber:✅
  • Textarea:✅

但是总是觉得直接涉及到React自带方法的修改,有点不太好。。eoF28资讯网——每日最新资讯28at.com

4.全局监听input事件

思路就是全局监听input这个事件,并在这个事件里去给触发事件的DOM节点增加spellCheck: false,具体代码为:eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

这样做的结果是:eoF28资讯网——每日最新资讯28at.com

  • Input:✅
  • Select:✅
  • InputNumber:✅
  • Textarea:✅

5.MutationObserver

兼容性比较差,所以不考虑了吧~~~eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

6.body 直接加 spellcheck="true"

哎。。。都怪没有好好看文档。。。其实前面做的都是无用功,最方便的做法是直接在 body 上加 spellcheck="false" 就行了,底下的后代元素会自动继承这个属性值。。eoF28资讯网——每日最新资讯28at.com

图片eoF28资讯网——每日最新资讯28at.com

eoF28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-93094-0.html为了关闭全局 Input 的自动拼写校验!走了好多弯路

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 多线程编程在 C# 中的基础概念与实现

下一篇: 使用React和GraphQL进行CRUD:完整教程与示例

标签:
  • 热门焦点
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 苹果、三星、惠普等暂停向印度出口笔记本和平板电脑

    集微网消息,据彭博社报道,在8月3日印度突然禁止在没有许可证的情况下向印度进口电脑/平板及显示器等产品后,苹果、三星电子和惠普等大公司暂停向印度
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
  • 质感不错!OPPO K11渲染图曝光:旗舰IMX890传感器首次下放

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
  • 最薄的14英寸游戏笔记本电脑 Alienware X14已可以购买

    2022年1月份在国际消费电子展(CES2022)上首次亮相的Alienware新品——Alienware X14现在已经可以购买了,这款笔记本电脑被誉为世界上最薄的 14 英寸游戏笔
Top