Input标签自动校验功能去除怎么实现

自动校验

注:以下输入框包含input、textarea

事情是这样的,上个星期,接到了一个需求,要求去除掉项目中的输入框的自动拼写检查功能,也就是下图出现的红线,这个检查是浏览器自带的

Input标签自动校验功能去除怎么实现

解决方法

其实是有解决方法的,而且也不难,很简单,只需要在输入框标签上加上一个属性spellcheck=false即可,也就是:

<input spellcheck=false /><textarea spellcheck=false />

解决思路

但是问题来了,我需要给全局的输入框标签都加上才行,由于本项目是使用了antd-design这个组件库,那我们来看看整个项目都有哪些组件包含了输入框标签呢?

1、Input:包含input

2、Select:包含input

3、InputNumber:包含input

4、Textarea:包含textarea

多种解决方法

1、ConfigProvider

Input标签自动校验功能去除怎么实现

ant-design官方提供了一个组件,可以用来为全局的组件进行统一配置,这个组件可以传入一个input的参数,即可配置全局的Input标签

Input标签自动校验功能去除怎么实现

也就是:

<ConfigProvider   input={{spellCheck: false}}></ConfigProvider>

由于这个配置只针对全局的Input,所以结果都有哪些组件成功去掉了拼写校验功能呢:

  • 1、Input:✅

  • 2、Select:❌

  • 3、InputNumber:❌

  • 4、Textarea:❌

2、修改defaultProps

大概的思路就是,修改ant-design的源码中的input这一部分,给Input、Textarea这些组件加上一个defaultProps,这个defaultProps长这样:

const defaultProps = {  spellCheck: false}

所以具体实现为以下代码

// Inputimport Input from 'antd/es/input';Input.defaultProps = {  ...Input.defaultProps,  ...defaultProps,};export default Input// Textareaimport TextArea from 'antd/es/input/TextArea';TextArea.defaultProps = {  ...TextArea.defaultProps,  ...defaultProps,};export default Textarea

结果就是,全局的Input、Textarea都去除了拼接检查了,但是Select、InputNumber却没有去除,因为他们是依赖了RCSelect、RCInputNumber这两个另外的组件,所以想改这两个,就得去改他们两依赖的组件,所以结果就是:

  • 1、Input:✅

  • 2、Select:❌

  • 3、InputNumber:❌

  • 4、Textarea:✅

3、拦截React.createElement

我们都知道在React中,只要涉及到JSX语法,最终在解析时都会通过React.createElement方法来创建标签

Input标签自动校验功能去除怎么实现

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

Input标签自动校验功能去除怎么实现

这样做的结果是:

  • 1、Input:✅

  • 2、Select:✅

  • 3、InputNumber:✅

  • 4、Textarea:✅

但是总是觉得直接涉及到React自带方法的修改,有点不太好。。

4、全局监听input事件

思路就是全局监听input这个事件,并在这个事件里去给触发事件的DOM节点增加spellCheck: false,具体代码为:

Input标签自动校验功能去除怎么实现

这样做的结果是:

  • 1、Input:✅

  • 2、Select:✅

  • 3、InputNumber:✅

  • 4、Textarea:✅

以上就是“Input标签自动校验功能去除怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

文章标题:Input标签自动校验功能去除怎么实现,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/27534

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月20日 下午11:57
下一篇 2022年9月20日 下午11:58

相关推荐

  • JavaScript单线程和任务队列是什么

    本文章是对以往“JavaScript单线程和任务队列是什么”知识点的总结与梳理,不仅内容丰富、详细,而且知识点逻辑十分清晰。相信多数人读完本文后,会对“JavaScript单线程和任务队列是什么”的知识内容,有更为深入的理解和认识。 一、JavaScript为什么设计为单线程? JavaScript…

    2022年6月27日
    49900
  • 如何进行APT41 Speculoos后门分析

    这篇文章将为大家详细讲解有关如何进行APT41 Speculoos后门分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 2020年3月25日,FireEye发表了APT41全球攻击活动报告。此攻击活动发生在1月20日至3月11日期间,主要对Citr…

    2022年9月15日
    56900
  • windows KB4525237安装失败怎么解决

    根据情况不同,小编为大家准备了四种解决方案 名列前茅种方案: 重新下载安装补丁 在我们下载补丁的过程中可能就会遇到文件损坏的情况,所以破损的补丁安装包是无法安装成功的。 这种情况下可以尝试重新下载一个补丁安装包重新安装。 第二种方案: 更新升级最新的.net framework(目前是4.8版本) …

    2022年9月1日
    41900
  • windows谷歌浏览器flash插件被拦截如何解决

    解决方法: 1、进入浏览器在地址栏输入“chrome://flags/#run-all-flash-in-allow-mode”。 Chrome:谷歌浏览器,flags:设置项列表。 run-all-flash-in-allow-mode:完全开启Chrome浏览器Flash插件功能。 2、随后找到…

    2022年9月8日
    57400
  • windows驱动精灵intel显卡dch驱动异常如何解决

    解决方法: 1、右击“此电脑”,点击“管理”。 2、选择左侧任务栏的“设备管理器”。 3、点击右侧任务栏“显示适配器”的下拉,选择“更新驱动程序”。 4、点击下方的“浏览我的计算机以查找驱动程序软件”。 5、接着点击“让我从计算机上的可用驱动程序列表中选取”。 6、选择“Microsoft 基本显示…

    2022年9月13日
    59200
  • windows浩辰cad看图王测量尺寸不对怎么解决

    解决方法: 1、我们可以看到首次测量的距离如图所示,发现与已知尺寸不同。 2、这时候我们点击窗口最下方的对象捕捉,如图所示、 3、再点击上方测量中的“距离” 4、然后我们将鼠标移动到需要测量的点,会发现软件会自动帮你定位。 5、选取名列前茅个点后,再使用相同的方法选取第二个点。 6、选取完成后按下键…

    2022年9月21日
    77000
  • windows键盘驱动如何更新

    键盘驱动更新方法: 1、首先,我们打开我们的电脑,然后我们右击电脑桌面上的此电脑。 2、弹出的界面,我们点击属性。 3、弹出的界面,我们点击设备管理器。 4、弹出的界面,我们找到键盘,然后我们点击打开它。 5、然后我们右击里面的PS/2标准键盘。 6、弹出的界面,我们点击属性。 7、弹出的界面,我们…

    2022年9月22日
    89900
  • Redis处理接口幂等性的方案有哪些

    前言:接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。接口幂等性是指用户对于同一操作发起的一次请求或者多次…

    2022年8月31日
    83500
  • mysql函数的作用有哪些

    mysql函数的作用是用来实现某些功能运算和完成各种特定操作;使用函数能够允许标准组件式编程,提高了SQL语句的重用性、共享性和可移植性,可以减少重复编写程序段的工作量,提高程序的可读性,提高程序编译和运行效率,产生质量较高的目标代码。 本教程操作环境:windows10系统、mysql8.0.22…

    2022年9月6日
    64400
  • 怎么用Java比较两个对象的大小

    一. 为什么需要比较对象 上一节介绍了优先级队列,在优先级队列中插入的元素必须能比较大小,如果不能比较大小,如插入两个学生类型的元素,会报ClassCastException异常 示例: class Student{ String name; int age; public Student(Stri…

    2022年9月13日
    91000
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部