如何以编程方式选择iOS设备上输入字段的文本,例如iPhone,iPad运行手机Safari?
通常,在.select()
元素上调用<input ... />
函数就足够了,但这对这些设备不起作用。光标只是留在现有条目的末尾,没有选择。
答案 0 :(得分:89)
input.setSelectionRange(0, 9999);
答案 1 :(得分:27)
这个帖子中没有任何内容适合我,这是我的iPad上可以使用的内容:
// t is the input field
setTimeout(function() {
t.setSelectionRange(0, 9999);
}, 1);
答案 2 :(得分:25)
很难证明是消极的,但我的研究表明这是Mobile Safari中的一个错误。
请注意,focus()可以或多或少地起作用 - 虽然它可能需要多次点击才能成功,如果您尝试响应用户点击相关字段,则无需使用,因为点击本身将会给予现场关注。不幸的是,select() 在Mobile Safari中根本不起作用。
您最好的选择可能是Apple的错误报告。
答案 3 :(得分:23)
See this fiddle :(在输入框中输入一些文字,然后点击“选择文字”)
在我的iPod(第5代iOS6.0.1)上的输入框中选择文本,打开键盘并显示剪切/复制/建议...菜单
使用普通的javascript。没有尝试使用jQuery
document.getElementById("p1").selectionStart = 0
document.getElementById("p1").selectionEnd = 999
请注意,数字999只是一个示例。您应该将这些数字设置为您要选择的字符数。
<强>更新强>
对于最后两个,您可以通过触发input
元素
更新:(2013年10月10日)
更新:(2013年11月14日)
.selectionStart
和.selectionEnd
可以工作。更新:(15-01-2015)
答案 4 :(得分:7)
很抱歉,在我之前的帖子中,我没有注意到Javascript意味着你想在Javascript中得到答案。
要使用 javascript 在 UIWebView 中获得您想要的内容,我已经设法将两个重要信息汇总起来以使其发挥作用。不确定移动浏览器。
element.setSelectionRange(0,9999);
做我们想要的事情
mouseUp事件正在撤消选择
因此(使用Prototype):
input.observe('focus', function() { this.setSelectionRange(0, 9999); }); input.observe('mouseup', function(event) { event.stop(); });
诀窍。
马特
答案 5 :(得分:3)
看起来焦点会起作用,但只有在从本机事件直接调用时才会起作用。使用类似SetTimeout之类的东西调用焦点不会出现调用键盘。控制ios键盘非常差。这不是一个好的情况。
答案 6 :(得分:1)
在Android 2.2附带的Webkit上,以下内容适用于我:
function trySelect(el) {
setTimeout(function() {
try {
el.select();
} catch (e) {
}
}, 0);
}
请参阅Chromium Issue 32865。
答案 7 :(得分:1)
使用iPad上的iOS 7,我能够完成这项工作的唯一方法是使用实际<textarea></textarea>
而不是<input>
字段。
e.g。
<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>
如何防止用户更改区域内的文本更加困难,因为只要你使用textarea,选择技巧就不再适用了。
答案 8 :(得分:1)
我疯狂地寻找这个解决方案,,而你所有的回复都有帮助它为我打开了另一种蠕虫病毒。
客户希望用户能够点击并选择所有,以及让用户'标签'并在iPad上选择全部(使用外接键盘。我知道,很疯狂......)
我解决这个问题的方法是重新排列事件。首先关注,然后点击,然后 touchstart 。
$('#myFUBARid').on('focus click touchstart', function(e){
$(this).get(0).setSelectionRange(0,9999);
//$(this).css("color", "blue");
e.preventDefault();
});
我希望这对某些人有所帮助,因为你们已经无数次帮助了我。
答案 9 :(得分:-4)
如果您使用的是符合HTML5标准的浏览器,则可以在placeholder="xxx"
标记中使用input
。
那应该可以胜任。