在文本字段中插入文本后聚焦光标
Focus cursor after inserting text in textfield
我做了以下函数将消息(msg)插入文本字段。
插入文本后,光标需要位于输入的消息的最后一个字符之后。文本字段已包含一些文本。
当我插入消息时,光标聚焦在味精末尾附近的某个地方,但肯定不会在最后一个字符之后。似乎有些字符没有按 .length 计算?
function insertAtCursor(msg) {
var textArea = document.getElementsByName("message")[0];
textArea.value = textArea.value.substr(0, textArea.selectionStart) + msg + textArea.value.substr(textArea.selectionEnd);
var endMsgPos = textArea.value.lastIndexOf(msg) + msg.length;
textArea.setSelectionRange(endMsgPos, endMsgPos);
}
不需要textArea.value.lastIndexOf(msg)
。
function insertAtCursor(msg) {
var textArea = document.getElementsByName("message")[0];
var selStart = textArea.selectionStart, val = textArea.value;
textArea.value = val.slice(0, selStart) + msg +
val.slice(textArea.selectionEnd);
var endMsgPos = selStart + msg.length;
textArea.setSelectionRange(endMsgPos, endMsgPos);
}
首先
,如果您尝试使用textArea.selectionStart
,则IE 8会遇到问题,因为它使用不同的API。
其次,如果插入符号在字符串的乞求处并且末尾的某个地方存在 msg 的值,则lastIndexOf
代码中的行为会很奇怪。
试试这个:
function insertAtCursor(msg) {
var e = document.getElementsByName('message')[0],
length = msg.length, val = e.value;
/* mozilla / dom 3.0 */
if ('selectionStart' in e){
var partial = val.slice(0, e.selectionStart) + msg;
e.value = partial + val.slice(e.selectionEnd);
var end = partial.length;
e.setSelectionRange(end, end);
}
/* exploder */
if (document.selection){
e.focus();
document.selection.createRange().text = msg;
}
}
演示在这里:http://jsbin.com/UnOBUbU/6
相关文章:
- 将事件聚焦/模糊在可编辑内容的元素上
- jQuery自动完成阻止选择后聚焦
- 自定义函数中的光标位置
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 当没有文本输入聚焦时检测空格键按下
- 在Widget代码中使用javascript从左向右滑动光标图像
- 将文本插入光标所在的文本区域
- jQuery聚焦文本框并转到末尾,但也可以设置光标的位置,以便用户可以看到它
- JQuery - 将光标放在文本区域的末尾,当光标聚焦时
- 是否可以将光标锁定/聚焦到文本区域的最后一行
- 在文本字段中插入文本后聚焦光标
- 在他通过 jQuery 通过 focusout 离开后,我如何用光标重新聚焦到输入
- 将光标聚焦在 HTML 上创建,然后在 Lightswitch 2013 中的属性字段之间移动光标
- 只有当光标聚焦在文本框中时才使用Javascript
- 将光标聚焦到隐藏字段
- 当光标聚焦在一个字段时,Phonegap返回按钮不工作
- 替代选择/聚焦功能,自动将光标放置在质量的文本框中
- 不能在Angular中使用Javascript聚焦光标
- 在正确的光标位置重新聚焦CKEditor
- 在 Shiny 中单击操作按钮后,将光标聚焦在文本区域中