l***@163.com
l***@163.com
  • 发布:2019-04-03 14:45
  • 更新:2020-12-09 13:10
  • 阅读:9685

如何让输入框保持焦点不失去?

分类:uni-app

页面上只有一个输入框,进入页面自动获取焦点,但是点击页面其他地方的时候,输入框就会失去焦点,软键盘会收起,我想做到,点击页面其他地方,包括提交按钮,输入框不会失去焦点,同时软键盘也不收起。老哥些有什么办法没?用JS的话,可以在焦点后重新获取,但是uniapp我没找到相关api,this.$refs.input.focus() 说不是一个function

2019-04-03 14:45 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com - hnfly

大兄弟, 不用那么复杂, 直接用这个 @touchend.prevent="sendmsg"
只要在发送按钮上把原来的@click="sendmsg"替换这个就完美解决了

  • 1***@qq.com

    2021-01-15 11:59

  • 1***@qq.com

    这样也有个问题,就是在没有软键盘的时候,点击发送按钮会弹出软键盘

    2021-05-17 18:04

  • z***@126.com

    特意注册个账号来感谢你,太棒了大哥,牛比,太牛比了,困扰我好长时间了。请问这个是为什么啊?

    2021-12-12 19:20

  • 千叶KE

    大哥!受我一拜,用你这方法终于解决了

    2022-04-18 18:13

  • 3***@163.com

    特意登录账号来感谢你,太感谢了

    2022-06-08 15:23

  • 1***@qq.com

    组合下拉选,手机端在滑动选择选项的时候,不希望input失去焦点,试了@touchend.prevent @touchmove.prevent @touchend.prevent 都不好用,求解

    2022-10-19 16:57

  • 1***@163.com

    很强

    2022-12-01 10:54

  • Tomyni

    nb

    2022-12-20 22:08

  • a***@sina.cn

    大师牛逼

    2023-04-21 09:51

  • 2***@qq.com

    回复 1***@qq.com: 你解决了吗

    2023-06-15 10:25

[已删除]

[已删除]

我解决了。
说说我的情况,我写了一个聊天app,聊天界面底部一个输入框,一个发送按钮。每次点击发送键盘都会收起,如何还要发生就要重新点击输入框调起键盘。无法想微信那样保持输入框常驻。
我的解决办法是:
<view class="chat-ipt">
<input id="msg-text" type="text" cursor-spacing="10" :focus="is_focus" v-model="info" value="" />
<view class="fs_btn">
<input type="text" @blur="chat_blur" @focus="chat_focus" cursor-spacing="10" value="" />
<button>发送</button>
</view>
</view>

在输入区有两个input,第一个放输入的内容,第二个和按钮放在一起用view包裹起来。
在第一个按钮上监听focus属性,默认时false。
在第二个输入框上监听获得、失去两个焦点。在获得焦点的时候,将is_focus设置为true,这会让第一个input得到焦点,同时处理信息发送的逻辑。在失去焦点时将is_focus设置为false。
第二个input使用定位放在按钮上面,设置透明度为0.
chat_blur(){
this.is_focus = false;
},
chat_focus(){
this.is_focus = true;
this.fs_info();//发送逻辑
}
这样就实现了键盘常驻了。

s***@126.com

s***@126.com - 哈哈

解决了吗 兄弟

5***@qq.com

5***@qq.com

我在做密码的显示隐藏也遇到类似的。。点击切换焦点就失去了。但是想要的效果是一直保持。有尝试在点击的时候重新给input进行focus。但是PC没问题,手机端还是不理想。。请问楼主有解决方法了吗?

Daen

Daen

<input class="input" type="number" @input="bindInput" :value="input" :focus="focusbool"></input>
在点击事件或者失去焦点的位置
先将focusbool置为false,然后settimeout里再置回true。实测有效。

  • 社交软件联盟

    这样会导致键盘震动,先消失再显示,对用户体验很不好啊

    2019-11-25 18:21

该问题目前已经被锁定, 无法添加新回复