移动端textarea输入框监听和输入字数限制(兼容ios和Android)

本文介绍了一种在网页上实现输入框字数限制的方法,包括HTML、CSS样式及JavaScript的实现细节。针对PC端和移动端的不同特性,采取了不同的事件监听策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

image.png

html
<div class="textareaBox">
    <textarea class="wishContent" placeholder="请输入不超过15个字" maxlength="15"></textarea>
    <span class="wordsNum">0/15</span>
</div>
css
.textareaBox {
   position: relative;
}

.wordsNum {
   position: absolute;
   bottom: 0.83rem;
   right: 0.83rem;
   color: #B3B3B3;
   font-size: 1rem;
}
js

pc端监听输入框你可能想到focus、blur、hover、onkeyup这些事件
移动端有兼容性问题,最佳方案是使用jq的 input propertychange监听事件


//封装一个限制字数方法
var checkStrLengths = function (str, maxLength) {
    var maxLength = maxLength;
    var result = 0;
    if (str && str.length > maxLength) {
        result = maxLength;
    } else {
        result = str.length;
    }
    return result;
}

//监听输入
$(".wishContent").on('input propertychange', function () {

    //获取输入内容
    var userDesc = $(this).val();

    //判断字数
    var len;
    if (userDesc) {
        len = checkStrLengths(userDesc, 15);
    } else {
        len = 0
    }

    //显示字数
    $(".wordsNum").html(len + '/15');
});
### 解决iOS设备上inputtextarea来回切换时出现的键盘遮挡问题 对于iOS设备上的`<input>``<textarea>`元素,在用户快速切换这些输入框时可能会遇到虚拟键盘弹出导致页面布局错乱或输入区域被遮挡的情况。针对这一现象,可以采取以下措施来优化用户体验。 #### CSS样式调整 为了防止iOS浏览器默认行为影响到表单控件的操作体验,可以在对应的CSS定义中增加特定属性: ```css /* 设置可选中文本 */ input, textarea { -webkit-user-select: auto !important; } ``` 此设置允许用户在iOS平台上正常使用选择功能的同时也解决了部分机型存在的无法编辑的问题[^3]。 #### JavaScript事件监听 除了静态样式的修正外,还需要借助JavaScript动态处理视窗大小变化带来的潜在冲突。当检测到软键盘激活状态改变时及时作出响应,确保活动元素始终处于可见区域内: ```javascript // 绑定窗口resize事件以应对键盘弹起引起的尺寸变动 window.addEventListener('resize', function () { const activeEl = document.activeElement; if (activeEl.tagName === 'INPUT' || activeEl.tagName === 'TEXTAREA') { setTimeout(() => { window.scrollTo({ top: activeEl.getBoundingClientRect().top + window.pageYOffset - 20, behavior: "smooth" }); }, 100); } }); ``` 上述脚本会在每次屏幕宽度发生变化(即可能是由于键盘显示/隐藏引起)之后延迟执行一次滚动操作,使当前获得焦点的输入域保持在视野中心位置附近。 #### HTML结构建议 最后,在编写HTML模板时也要注意合理安排各个组件之间的相对关系,避免不必要的嵌套层次过多造成渲染复杂度上升。例如使用如下简化版示例代码片段展示如何构建一个基本的支持自动聚焦特性的多行文本区: ```html <textarea id="test" style="-webkit-user-select:text!important;" contenteditable="true" class="input" placeholder="请输入..." autofocus> </textarea> ``` 通过以上几个方面的综合改进,能够有效缓解乃至彻底消除iOS端因频繁切换不同类型的输入控件而导致视觉干扰的现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值