我需要一个代码来查找文本框/文本区域中光标的当前位置.它应该适用于chrome和firefox.以下是我使用的代码:
<!DOCTYPE html>
<html>
<head>
<script>
function textbox()
{
document.getElementById('Javascript_example').value = document.activeElement.id;
var ctl = document.getElementById('Javascript_example');
alert(ctl);
var startPos = ctl.selectionStart;
alert(startPos);
var endPos = ctl.selectionEnd;
alert(endPos);
}
</script>
</head>
<body>
<input id="Javascript_example" name="one" type="text" value="Javascript_example" onclick="textbox()">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
找出在真实浏览器中选择的内容非常简单:
var range = {
start: textbox.selectionStart,
end: textbox.selectionEnd
}
Run Code Online (Sandbox Code Playgroud)
但IE像往常一样,不明白.什么是最好的跨浏览器方式?
我试图弄清楚如何使用jQuery突出显示输入框内的文本的某些部分.突出显示输入框的全部内容非常简单,但是如何突出显示一个单词或几个字母呢?
谢谢!
我尝试使用输入中的当前选定文本,window.getSelection()但我总是得到一个空字符串:
expect(browser.executeScript("return window.getSelection().toString();")).toEqual("test");
Run Code Online (Sandbox Code Playgroud)
结果成:
Expected '' to equal 'test'.
Run Code Online (Sandbox Code Playgroud)
使用angularjs.org作为目标站点的完整可重复测试:
describe("My test", function () {
beforeEach(function () {
browser.get("https://angularjs.org/");
});
it("should select text in an input", function () {
var query = element(by.css("input.search-query"));
query.sendKeys("test");
query.sendKeys(protractor.Key.chord(protractor.Key.COMMAND, "a"));
expect(browser.executeScript("return window.getSelection().toString();")).toEqual("test");
});
});
Run Code Online (Sandbox Code Playgroud)
请注意,我实际上看到输入的文本是使用COMMAND +"a"选择的.
我究竟做错了什么?
使用量角器2.5.1,firefox 41.
javascript selenium end-to-end selenium-webdriver protractor
我想在文本字段或文本区域中获取所选范围的光标开始和结束位置.我在各种论坛上尝试了很多功能.但是当选择的最后一个字符是新行字符时,JavaScript会在IE6中忽略它.有想法的人吗?
我想知道是否有可能在整个页面中找到textarea中的carret的确切位置(以像素为单位).例如,如果我输入This is text了我的文本框,我想知道从屏幕左上角到carot的像素.
它将采用X:200 Y:100的形式.这样我就可以定位浮动div.这需要在javascript中动态完成.
多谢你们
我知道有很多很棒的富文本编辑器可以很容易地移植到棱角分明,并且有很多讨论如何做到这一点,但我想创建自己的.
我有一个基本的想法:
知道我怎么能够创建一个将纯文本呈现的函数html?
我正在尝试从textarea中提取确切的选择和光标位置.像往常一样,大多数浏览器中的简单操作都不在IE中.
我正在使用这个:
var sel=document.selection.createRange();
var temp=sel.duplicate();
temp.moveToElementText(textarea);
temp.setEndPoint("EndToEnd", sel);
selectionEnd = temp.text.length;
selectionStart = selectionEnd - sel.text.length;
Run Code Online (Sandbox Code Playgroud)
其中99%的时间都有效.问题是TextRange.text不返回前导或尾随换行符.因此,当光标在段落之后是几个空行时,它会在前一段的末尾产生一个位置 - 而不是实际的光标位置.
例如:
the quick brown fox| <- above code thinks the cursor is here
| <- when really it's here
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一解决方法是在选择之前和之后临时插入一个字符,抓取实际选择,然后再次删除那些临时字符.这是一个黑客,但在一个快速实验看起来它会起作用.
但首先,我想确定没有更简单的方法.
我有一个输入元素:
<input type="text" id="t" value="abcdefghij" />
Run Code Online (Sandbox Code Playgroud)
我想创建一个 selectionStart
document.getElementById("t").selectionStart
Run Code Online (Sandbox Code Playgroud)
我需要的功能是:
function GetSelectionStart(o) {
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
r.moveEnd('character', o.value.length)
if (r.text == '') return o.value.length
return o.value.lastIndexOf(r.text)
} else return o.selectionStart;
}
function GetSelectionEnd(o) {
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
r.moveStart('character', -o.value.length)
return r.text.length
} else return o.selectionEnd;
}
Run Code Online (Sandbox Code Playgroud)
如何<input type="text" />在IE上添加此"属性" ?可能吗?
我想<br/>在用户点击输入按钮时将(换行符)添加到文本框中.
我怎样才能在jquery onkeyup事件中实现它.可以向我展示示例或实现它的任何好网站.
谢谢
javascript ×8
cursor ×3
dom ×2
jquery ×2
position ×2
angularjs ×1
end-to-end ×1
firefox ×1
html ×1
newline ×1
onkeyup ×1
prototype ×1
protractor ×1
richtextbox ×1
selenium ×1
textarea ×1
textbox ×1
wysiwyg ×1