您如何在iOS设备(例如运行移动Safari的iPhone,iPad)上以编程方式选择输入字段的文本?
通常.select()
,在<input ... />
元素上调用函数就足够了,但这在那些设备上不起作用。光标仅停留在现有条目的末尾,而没有进行选择。
您如何在iOS设备(例如运行移动Safari的iPhone,iPad)上以编程方式选择输入字段的文本?
通常.select()
,在<input ... />
元素上调用函数就足够了,但这在那些设备上不起作用。光标仅停留在现有条目的末尾,而没有进行选择。
Answers:
input.setSelectionRange(0, 9999);
.focus()
在调用之前触发输入时,这才对我有用input.setSelectionRange
。如果您正在监听focus
输入中的事件,请记住要考虑无限循环。
readonly
设置了属性,这将不适用于textarea 。
看到这个小提琴:(在输入框中输入一些文本,然后单击“选择文本”)
它正在iPod(第5代iOS6.0.1第五代)的输入框中选择文本,打开键盘并显示“剪切/复制/建议...”菜单。
使用纯JavaScript。没有尝试使用jQuery
document.getElementById("p1").selectionStart = 0
document.getElementById("p1").selectionEnd = 999
请注意,数字999仅是示例。您应该将这些数字设置为要选择的字符数。
更新:
对于最后两个,您可以通过触发input
元素上的click事件进行实验
更新:(07-10-2013)
更新:(14-11-2013)
.selectionStart
并且.selectionEnd
确实起作用。更新:(15-01-2015)
<input/>
的iPad时,我以为在我敲击jsfiddle的“ CSS”窗格(其中,我键入的任何内容都不可见)。一旦我将水龙头对准了正确的位置<input/>
,您的“选择文本”按钮就可以在iOS-7.0.3 :-)上正常工作。
抱歉,在我之前的文章中,我没有注意到Javascript暗示您需要Java答案。
为了使用javascript在UIWebView中获得所需的内容,我设法将两个重要的信息拼凑起来以使其正常工作。不确定移动浏览器。
element.setSelectionRange(0,9999);
做我们想要的
mouseUp事件正在撤消选择
因此(使用原型):
input.observe('focus',function(){ this.setSelectionRange(0,9999); }); input.observe('mouseup',function(event){ event.stop(); });
绝招。
马特
$("input").focus(function () { this.setSelectionRange(0, 9999); return false; } ).mouseup( function () { return false; });
focusin
iOS 7而不是专注于此,iOS 7
看起来焦点将起作用,但仅当从本地事件直接调用时才起作用。使用SetTimeout之类的方法来调用焦点不会出现在键盘上。ios键盘的控制非常差。这不是一个好情况。
在Android 2.2随附的Webkit上,以下内容对我来说很有效:
function trySelect(el) {
setTimeout(function() {
try {
el.select();
} catch (e) {
}
}, 0);
}
参见Chromium Issue 32865。
使用iPad上的iOS 7,我能够完成这项工作的唯一方法是实际使用它<textarea></textarea>
而不是使用<input>
字段。
例如
<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>
如何阻止用户更改区域内的文本更加困难,因为您将文本区域设置为只读时,选择技巧将不再起作用。
我很疯狂地在寻找这种解决方案,而您的所有答复都帮助它为我打开了另一罐蠕虫。
客户端希望用户能够单击并选择全部,还让用户“制表”并在iPad上选择全部(使用外部键盘。我知道,这很疯狂...)
我对这个问题的解决方案是重新安排事件。首先聚焦,然后单击,然后触摸开始。
$('#myFUBARid').on('focus click touchstart', function(e){
$(this).get(0).setSelectionRange(0,9999);
//$(this).css("color", "blue");
e.preventDefault();
});
我希望这对某人有帮助,因为您为我提供了无数次帮助。