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

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

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

自动校验

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

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

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

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

解决方法

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

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

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

解决思路

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

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

多种解决方法

1.ConfigProvider

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

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

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

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

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

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

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

2.修改defaultProps

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

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

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

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

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

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

3.拦截React.createElement

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

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

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

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

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

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

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

4.全局监听input事件

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

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

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

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

5.MutationObserver

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

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

6.body 直接加 spellcheck="true"

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 中兴AX5400Pro+上手体验:再升级 双2.5G网口+USB 3.0这次全都有

    2021年11月的时候,中兴先后发布了两款路由器产品,中兴AX5400和中兴AX5400 Pro,从产品命名上就不难看出这是隶属于同一系列的,但在外观设计上这两款产品可以说是完全没一点关系
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • OPPO K11样张首曝:千元机影像“卷”得真不错!

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
Top