因此,我想出了如何使用e.target.setSelectionRange(0, 999)
使iOS选择文本:
第一个
https://codepen.io/kslstn/pen/ZvoEQa
但是,这仅适用于受信任的事件:直接受用户输入影响的事件(https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted)。我希望在用户通过单击请求时显示一个最初隐藏的Vue组件。当它出现时,该组件内的输入字段应使其内容被选中。
我尝试了以下方法:
1.当组件出现时执行setSelectionRange(在组件的mounted()上)。不起作用,因为它不是一个受信任的事件(我认为)。
1.让调用我的组件的click事件通过查找组件的ID来设置组件的选择。这将是一个丑陋的解决方案,因为它没有干净地分隔我的组件。它也不起作用,因为在单击时,组件不在DOM中,无法找到输入字段的ID。
1.向解决方案2添加setTimeout。未成功:文本选择由不可信超时事件触发。
我想要的太多了吗?
1条答案
按热度按时间i2byvkas1#
如果你的DOM元素没有焦点,你就不能使用
setSelectionRange
。在你的codepen中,它有焦点(你可能应该在那里使用focus
事件,而不是mouseup
),但是当一个组件被挂载时,它没有焦点。更新:这通常可以工作,但显然不能在IOS上工作。This page说:
如果元素没有焦点,
setSelectionRange
将无法在iOS上工作。另外,请注意,任何围绕文本输入的操作都可以在移动的Safari上聚焦is highly unreliable。那里的链接说:
从iOS 5开始,由合成点击事件触发的处理程序可以触发输入元素的焦点。
因此,我们可能需要在输入上合成一个
click
事件,以获得焦点。更新(再次):您所能做的可能就是选择
focus
上的文本。我已经相应地更新了我的代码。如果focus
以编程方式工作,那么当组件出现时将选择文本;否则,当您点击该字段时,它将被选中。第一个