关于input的一些问题解决方法分享

简介: 前言input是我们接受来自用户的数据常用标签,在前端开发中,相信每个人都会用到这个标签,所以在开发过程中也时候也会遇到一些问题,本文的内容是我在跟input相爱相杀过程中产生的,在此记录分享一下。如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。个人博客了解一下:obkoro1.com本文内容包括:移动端底部input被弹出的键盘遮挡。控制input显/隐密码。在input中输入emoji表情导致请求失败。input多行输入显示换行。输入框首尾清除空格-trim()在input中监听键盘事件

image.png

前言

input是我们接受来自用户的数据常用标签,在前端开发中,相信每个人都会用到这个标签,所以在开发过程中也时候也会遇到一些问题,本文的内容是我在跟input相爱相杀过程中产生的,在此记录分享一下。如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。


本文内容包括:

  1. 移动端底部input被弹出的键盘遮挡。
  2. 控制input显/隐密码。
  3. 在input中输入emoji表情导致请求失败。
  4. input多行输入显示换行。
  5. 输入框首尾清除空格-trim()
  6. 在input中监听键盘事件

移动端底部input被弹出的键盘遮挡

input输入框是通过position:fixed一直放在页面底部,当点击input进行输入的时候,就会出现如下图片情况(有的机型会遮挡一些)。

当时这个问题是去年在ios中遇到的,在最新版的ios系统中,貌似解决了这个bug,但是为了向下兼容以及防止其他其他机型也出现这个问题,大家可以稍微记一下这个解决方法。

image.png

在解决这个问题的时候,有试过下面这种方法:

在input的focus事件中,开启一个定时器,然后每隔300毫秒进行一次document.body.scrollTop=document.body.scrollHeight的调整,运行3次即可。

当时还以为解决了,但是当你底部评论区还有很多内容,你每次点击input,想要输入的时候,整个页面通过scrollTop就会不断的向下滚动,这个体验不用说自己也知道是相当失败的,然后就再去找解决方法,结果就有了下面这个。

Element.scrollIntoView()

Element.scrollIntoView():方法让当前的元素滚动到浏览器窗口的可视区域内

document.querySelector('#inputId').scrollIntoView();
    //只要在input的点击事件,或者获取焦点的事件中,加入这个api就好了

这个api还可以设置对齐方法,选择将input放在屏幕的上方/下方,类似的api还有:Element.scrollIntoViewIfNeeded(),这两个是解决同一个问题的,选择一个用就可以了。


控制input显/隐密码

这个就很简单了,只需更改input的type属性值就可以了。可以看一下codepen的demo

//点击函数,获取dom,判断更改属性。
    show(){
        let input=document.getElementById("inputId");  
        if(input.type=="password"){ 
          input.type='text';
        }else{
          input.type='password';
        } 
    }

在input中输入emoji表情导致请求失败

现在用户输入emoji简直已经成为了习惯,如果前后端没有对emoji表情进行处理,那么用户在上传的时候,就会请求失败。

通常这个问题是后端那边处理比较合适的,前端是做不了这件事的,或者说很难做这件事。

之前看过一篇文章,这个文章里面讲了怎么在上传和拿数据下来的时候不会报错,但是不能在显示的时候转换为表情。

ps:之前拿微信用户名的时候,有些人可能在微信昵称上面就会包含表情,如果后端没对表情处理转换,那么普通请求也会出错

之所以说这个,当表单请求错误的时候各位如果实在找不到问题可以往这方面考虑一下,我真的被坑过的o(╥﹏╥)o。


textarea多行回车换行,显示的时候换行设置:

在使用textarea标签输入多行文本的时候,如果没有对多行文本显示处理,会导致没有换行的情况,就比如下面这种情况,用户在textarea是有换行的。

image.png

Css属性:white-space

white-space 属性用于设置如何处理元素内的空白,其中包括空白符和换行符。

image.png

只要在显示内容的地方将该属性设置为white-space: pre-line或者white-space:pre-wrap,多行文本就可以换行了

设置之后,显示效果:

image.png

输入框首尾清除空格-trim()

输入框清除首尾空格是input较为常见的需求,通常在上传的时候将首尾空格去除掉。一般使用:字符串的原生方法trim() 从一个字符串的两端删除空白字符。

trim() 方法并不影响原字符串本身,它返回的是一个新的字符串。

原生清除方法:

//原生方法获取值,清除首尾空格上传str2 
    var str2 = document.getElementById("inputId").trim();

Vue清除方法:

Vue提供了修饰符删除首尾空格, 加了修饰符.trim会自动过滤用户输入的首尾空白字符

<input v-model.trim="msg">

貌似angular也提供了类似过滤的方法,感兴趣的可以自己去查一下。


在input中监听键盘事件

在用户登录或者搜索框的时候,一般都会监听键盘事件绑定回车按键,来执行登录/搜索 等操作。

原生绑定:

<input onkeydown="keydownMsg(event)" type="text" />
 function keydownMsg(key) {
        keyCode = key.keyCode; //获取按键代码
        if (keyCode == 13) {  //判断按下的是否为回车键
            // 在input上监听到回车 do something
        }
    }

Vue按键修饰符

Vue为监听键盘事件,提供了按键修饰符,并且为常用的按键提供了别名,使用方法如下:当回车按键在input中被按下的时候,会触发里面的函数。

<input @keyup.enter="enterActive">



目录
相关文章
|
编解码 Android开发 iOS开发
airserver软件激活码mac版
AirServer 可以方便的利用 AirPlay, Google Cast 以及 Miracast 等技术,将 iPhone, iPad, Mac, Android, Nexus, Pixel, Chromebook, 以及 PC 上面的内容投影到更大的屏幕上面,从而更好的促进协作。
7356 0
Flutter 中使用 ICON
Flutter 中使用 ICON
497 5
Flutter 中使用 ICON
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
机器学习/深度学习 编解码 算法
ICCV 2023 | 当尺度感知调制遇上Transformer,会碰撞出怎样的火花?
近年来,基于Transformer和CNN的视觉基础模型取得巨大成功。有许多研究进一步地将Transformer结构与CNN架构结合,设计出了更为高效的hybrid CNN-Transformer Network,但它们的精度仍然不尽如意。本文介绍了一种新的基础模型SMT(Scale-Aware Modulation Transformer),它以更低的参数量(params)和计算量(flops)取得了大幅性能的提升。
|
人工智能 开发框架 前端开发
移动应用开发的未来趋势:跨平台框架与AI的融合
在数字化时代的浪潮中,移动应用已成为人们日常生活和工作中不可或缺的一部分。随着技术的不断进步,移动应用开发领域也迎来了新的变革。本文将探讨移动应用开发的未来趋势,重点关注跨平台框架的发展以及人工智能(AI)技术在其中的应用。通过分析当前市场上流行的跨平台开发框架,如React Native、Flutter等,以及AI技术如何改变移动应用的开发方式,我们将揭示这些技术如何共同推动移动应用开发进入一个新的时代。
327 27
|
存储 缓存 小程序
【经验分享】解决input placeholder光标漂移问题
【经验分享】解决input placeholder光标漂移问题
705 7
|
存储 监控 安全
【深度】2023年磁带市场迎来“二级存储”的新时代
磁带是最环保的存储技术,可以显著降低数据中心运营的碳排放和电子废物。结合改进的访问时间、更快的数据速率、50年的介质寿命、最低的TCO、最高的设备可靠性以及巨大的可持续性优势,现代磁带有望在走向ZB时代的巨大需求中发挥最大潜力。磁带已经明确地成为二级存储的首选。
1209 0
【深度】2023年磁带市场迎来“二级存储”的新时代
|
前端开发
【vue3】前端实现 生成条形码并调用打印机打印
【vue3】前端实现 生成条形码并调用打印机打印
1516 1
|
关系型数据库 MySQL Linux
mysql数据库安装教程(超级超级详细)
mysql数据库安装教程(超级超级详细)