我有一个contenteditable div,其中我有多个标签(br,b,u,i)和文本,我需要获得相对于div的插入位置,包括所有标签.
例如:
<div id="h" contenteditable="true">abc<b>def<br>ghi</b>jkl</div>
Run Code Online (Sandbox Code Playgroud)
如果光标在g和h之间,我需要插入位置为14.问题是找到的使用treeWalker的方法在这种情况下不起作用.找不到粗体标签......可能是因为它没有关闭.我也尝试了几种方法,但仍然没有运气.
我需要它在Firefox中工作.谢谢.
我有这个contentedittable div
<div contenteditable="true" id="text">minubyv<img src="images/smiley/Emoji Smiley-01.png" class="emojiText" />iubyvt</div>
Run Code Online (Sandbox Code Playgroud)
所以我想获得div的插入位置,并假设光标位于最后一个字符之后.这是我获得插入位置的代码
function getCaretPosition(editableDiv) {
var caretPos = 0,
sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
if (range.commonAncestorContainer.parentNode == editableDiv) {
caretPos = range.endOffset;
}
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
if (range.parentElement() == editableDiv) {
var tempEl = document.createElement("span");
editableDiv.insertBefore(tempEl, editableDiv.firstChild);
var tempRange = range.duplicate();
tempRange.moveToElementText(tempEl);
tempRange.setEndPoint("EndToEnd", range);
caretPos = tempRange.text.length;
}
}
return caretPos;
}
var update …Run Code Online (Sandbox Code Playgroud) 使用JTextFields时我喜欢设置默认文本.
然后我运行程序,将自动选择此默认文本(至少当您只有一个字段时).换句话说,如果我立即键入一个字母,默认文本将被删除并替换为新文本.
我的问题是如何以允许我键入字母而不删除默认文本的方式更改默认设置?我想将这封信添加到默认文本的末尾.
这是我的代码:
public class ButtonsNText extends JPanel implements ActionListener, KeyListener {
private JTextField TextLine;
private JToggleButton UpperCaseButton;
private JToggleButton LowerCaseButton;
private JCheckBox ContinuousButton;
private ButtonGroup myButtonGroup;
public ButtonsNText(){
TextLine = new JTextField(10);
add(TextLine); TextLine.setName("TextLine");
TextLine.setText("default text");
TextLine.setCaretPosition(TextLine.getText().length());
TextLine.addKeyListener(this);
myButtonGroup = new ButtonGroup();
UpperCaseButton = new JToggleButton("Upper case");
add(UpperCaseButton);UpperCaseButton.setName("UpperCaseButton");
LowerCaseButton = new JToggleButton("Lower case");
add(LowerCaseButton); LowerCaseButton.setName("LowerCaseButton");
ContinuousButton = new JCheckBox("Continuous?");
add(ContinuousButton); ContinuousButton.setName("ContinuousButton");
myButtonGroup.add(UpperCaseButton); myButtonGroup.add(LowerCaseButton);
UpperCaseButton.addActionListener(this);
LowerCaseButton.addActionListener(this);
ContinuousButton.addActionListener(this);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Hello …Run Code Online (Sandbox Code Playgroud) 如何通过当前的插入位置在textarrea中找到一个单词?
我尝试了类似这样的东西,但这只返回第一个字母到达插入位置的字符.例如:
如果光标位于fo和o之间,则返回fo而不是foo被检查.
Fo |o bar不等于bar foo.=> Fo期待Foo
Foo bar不等于|bar foo.=> equ期待 equal.
这是我到目前为止所做的:
function getCaretPosition(ctrl) {
var start, end;
if (ctrl.setSelectionRange) {
start = ctrl.selectionStart;
end = ctrl.selectionEnd;
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
start = 0 - range.duplicate().moveStart('character', -100000);
end = start + range.text.length;
}
return {
start: start,
end: end
}
}
$("textarea").keyup(function () {
var caret …Run Code Online (Sandbox Code Playgroud) 我是JavaScript的新手,希望有人可以帮我解决以下问题:
主要在IE 8中寻找解决方案 - 如果它能够更好地覆盖其他浏览器/版本.我有一个页面只有一个动态创建的contenteditable div,包含文本和HTML标记.在页面上,我想添加一个按钮,将光标位置的某些文本插入此div.
到目前为止,我有以下代码,只要我在div中选择一个文本,但是如果我只是将光标放在那里而不选择任何东西,它会将我的文本插入div之外.
如何才能让它始终在光标位置添加我的文本,就像现在在选择位置一样?(我甚至不需要它来替换选择,因为它只需要在光标位置.此外,这只需要一个特定的div.)
我的代码:
<html>
<head>
<script type="text/javascript">
function test()
{
var input = "TEST";
document.selection.createRange().pasteHTML(input);
}
</script>
</head>
<body>
<div id="myDiv" contenteditable>This is a test text.</div><br />
<button type="button" onclick="test()">Test</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
蒂姆,谢谢你的帮助
javascript jquery contenteditable cursor-position getcaretpos
getcaretpos ×5
javascript ×3
caret ×2
jquery ×2
cpu-word ×1
html ×1
java ×1
jtextfield ×1
string ×1
swing ×1
textarea ×1