前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >input 不可输入,且禁止光标显示的几种方案兼容iphone5(se)

input 不可输入,且禁止光标显示的几种方案兼容iphone5(se)

作者头像
李维亮
发布2021-07-08 10:10:22
1.6K0
发布2021-07-08 10:10:22
举报
文章被收录于专栏:李维亮的博客
代码语言:javascript
复制
<input type="text" placeholder="请选择" readonly="readonly" unselectable="on">

设置只读标签readonly="readonly", 禁止光标显示unselectable="on" 但是这个Android机正常,ios,iphone 5(se)都还依然会出现光标

所以在网上找了些资料,现在整理下, 方案一

代码语言:javascript
复制
<input type="text" value="test" onfocus="this.blur()" readonly="readonly" unselectable="on">

ios浏览器和ie9已下(包括ie9)浏览器都有input设置readonly之后input还有聚焦的问题。 另一种方法就是input聚焦时马上让它失去焦点,这样可以规避光标显示了。

代码语言:javascript
复制
$('input[readonly]').on('focus', function() {
    $(this).trigger('blur');
});

精简后:

代码语言:javascript
复制
onfocus="this.blur()"

这个很好理解就是input聚焦时马上让它失去焦点,这样可以规避光标显示了。但是缺点是一方面js处理没有css好,二是如果需要在该元素上绑定其他事件,其他人开发不留意可能会造成事件覆盖。

方案二(CSS):

代码语言:javascript
复制
input[readonly="readonly"] {
  -moz-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none;
}

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

方案三(CSS):

代码语言:javascript
复制
input[readonly="readonly"] {
  pointer-events: none;
}

这个是也能实现类似功能,当然也是有弊端的,绑定在只读表单元素的所有事件将无法生效。除此之外都表现完美,如果你页面中的input只做展示用且不做任何操作那么就可以采用这个方案~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档