通过扫码枪扫码、按钮点击事件在光标处插入文本,这是前台js常用的功能。但是在input输入框和textarea文本框定位光标,插入数据是有点不同的

首先最简单的,适用于input输入框的方法

HTML代码:

<input id="phone"/>
<button type="button" onclick="insertContent()">插入</button>

JS代码:

function insertContent() {
$("#phone").insertAtCaret("要插入的内容");
} (function($){
$.fn.extend({
insertAtCaret: function(myValue){
var $t=$(this)[0];
if (document.selection) {
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
else
if ($t.selectionStart || $t.selectionStart == '0') {
var startPos = $t.selectionStart;
var endPos = $t.selectionEnd;
var scrollTop = $t.scrollTop;
$t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length);
this.focus();
$t.selectionStart = startPos + myValue.length;
$t.selectionEnd = startPos + myValue.length;
$t.scrollTop = scrollTop;
}
else {
this.value += myValue;
this.focus();
}
}
})
})(jQuery);

上面的方法并不适用于在textarea文本框中插入数据,如下方法可以解决这个问题:

HTML代码:

<textarea id="textarea" rows="10" cols="60" style="margin: 0px 0px 10px; width: 440px; height: 186px;"></textarea>
<button type="button" id="insert">插入</button>

JS代码:

$('#textarea').on('select',function () {
message.setCaret(this);
}).on('click',function () {
message.setCaret(this);
}).on('keyup',function () {
message.setCaret(this);
}); $('#insert').on('click',function () {
var textareaStr = $('#textarea').val();
message.insertAtCaret($('#textarea')[0],$("#nick").val());
}); var message = {
setCaret: function (textObj) {
if (textObj.createTextRange) {
textObj.caretPos = document.selection.createRange().duplicate();
}
}, insertAtCaret: function (textObj, textFeildValue) {
if (document.all) {
if (textObj.createTextRange && textObj.caretPos) {
var caretPos = textObj.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? textFeildValue + ' ' : textFeildValue;
} else {
textObj.value = textFeildValue;
}
} else {
if (textObj.setSelectionRange) {
var rangeStart = textObj.selectionStart;
var rangeEnd = textObj.selectionEnd;
var tempStr1 = textObj.value.substring(0, rangeStart);
var tempStr2 = textObj.value.substring(rangeEnd);
textObj.value = tempStr1 + textFeildValue + tempStr2;
} else {
alert("This version of Mozilla based browser does not support setSelectionRange");
}
}
}
}

上面的方法对于input输入框同样适用。

最新文章

  1. tangram2.6(XE2)\framework框架加载包异常 调试的地方
  2. SVNServer迁移
  3. Node调试之道-----JSHint
  4. Linux下查看所有CPU核心使用率的方法
  5. 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl
  6. ubuntu系统安装flashplayer
  7. IIS6.0、IIS7中的站点、应用程序和虚拟目录详细介绍
  8. B - A + B Again
  9. iphone/ipad前端开发技巧
  10. quartz群调查调度机制和源代码分析
  11. form表单标签的enctype属性的作用
  12. 大型网站制作前端使用PHP后台逻辑用 Java
  13. Java中ArrayList,Vector,LinkedList,HashMap,HashTable,HashSet对比及总结
  14. 20162330 第三周 蓝墨云班课 泛型类-Bag 练习
  15. Go-day04
  16. android 生成、pull解析xml文件
  17. topcoder srm 690 div1 -3
  18. ie6遮罩层兼容 100%高度的实现
  19. 使用GPUImage渲染图片教程
  20. 铁乐学Python_day08_文件操作

热门文章

  1. new与malloc有什么区别
  2. linux的安装和配置
  3. 【xlwings】 wps 和 office 的excel creat_sheet区别
  4. MGR复制
  5. Jmeter之Plugin插件,服务器监控
  6. CSP2019螺旋升天爆炸记
  7. Scala学习十一——操作符
  8. python之字符串类型及其操作
  9. 【科创人上海行】Tinyfool郝培强 :始于不惑的微服务式创业,背负身心病痛贴地飞行
  10. 学习javascript,您将发现以下两个学习指南