当前位置: 首页 > news >正文

表单中readonly的input等标签,禁止光标进入(focus)的几种方式

需求及问题描述

在做移动端页面,需要在订单页面中显示表单数据,由于UI统一,所以就依旧采用form的结构来写结构,只读数据的标签自然要加readonly=”readonly”,以为这样就行了。
测试中Chrome模拟移动端是看不出问题的。然而iOS手机上一看,虽然表单元素不能编辑内容,但是会出现闪动的光标以及页面底部有一条系统自带的控制bar(安卓的没有测试,我猜想也有问题吧?)。如下图:

form.png

这种情况对我来说并不好。于是网上找了一些解决方案,现在总结如下:

方案一(JS):

<input type="text" value="test" onfocus="this.blur()" readonly="readonly">

这个很好理解就是进入的时候自动跳出。但是缺点是一方面js处理没有css好,二是如果需要在该元素上绑定其他事件,其他人开发不留意可能会造成事件覆盖。

方案二(CSS):

[readonly="readonly"] {
  user-select: none;
}

这是个新的实验性属性,具体说明及兼容性可参考user-select MDN
用起来感觉很好,但是同样有两个问题:一,非标准属性(请尽量不要在生产环境中使用它!);二,如果用户想要复制该表单内容就不行了,这个问题个人感觉很严重!

方案三(CSS):

[readonly="readonly"] {
  pointer-events: none;
}

这个是我感觉比较适合我的,因此最后我采纳了该方案,当然也是有弊端的,绑定在只读表单元素的所有事件将无法生效。除此之外都表现完美,就我目前需求来看,也不需要什么事件。因此采用了~

当然,如果你也遇到相似的问题,可以根据情况选择对应的方案,当然,如果你也有更好的方法也欢迎留言~

相关文章:

  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • windows下VisualStudio和QtCreator搭建Qt开发环境
  • mysql 基础学习1
  • Spring第一个helloWorld
  • 剑指offer十五之反转链表
  • 数据库 之 创建,删除,查看 数据库
  • 张高兴的 Windows 10 IoT 开发笔记:ToF Sensor VL53L0X
  • 积分计算题
  • poj2420 A Star not a Tree?
  • 数据结构(一)
  • C++类对应的内存结构
  • PM2 常用命令
  • 文因互联CEO鲍捷:做聊天机器人有哪些坑?
  • 使用Flash打造可定义界面风格的文件上传控件
  • go 入门学习笔记之 select + chan (十一)
  • 《深入 React 技术栈》
  • EOS是什么
  • If…else
  • JS+CSS实现数字滚动
  • Python打包系统简单入门
  • redis学习笔记(三):列表、集合、有序集合
  • Terraform入门 - 3. 变更基础设施
  • vue-cli3搭建项目
  • 分享一份非常强势的Android面试题
  •  一套莫尔斯电报听写、翻译系统
  • elasticsearch-head插件安装
  • 函数计算新功能-----支持C#函数
  • ​人工智能书单(数学基础篇)
  • #单片机(TB6600驱动42步进电机)
  • (2.2w字)前端单元测试之Jest详解篇
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (离散数学)逻辑连接词
  • .NET 8.0 发布到 IIS
  • .net 无限分类
  • .net6Api后台+uniapp导出Excel
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .ui文件相关
  • ?.的用法
  • @SpringBootApplication 包含的三个注解及其含义
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [C++]AVL树怎么转
  • [C++]类和对象(中)
  • [C++]拼图游戏
  • [Godot] 3D拾取
  • [HDU 3555] Bomb [数位DP]
  • [HDU]2161Primes
  • [iOS]-NSTimer与循环引用的理解
  • [NSSRound#16 Basic]RCE但是没有完全RCE
  • [Servlet 3]会话管理、进阶API、监听过滤器