JQuery在光标位置插入内容

寻技术 JQuery 2023年07月11日 84
 (function($) {
     $.fn.extend({
         insertAtCaret: function(myValue) {
             var $t = $(this)[0];
               //IE
             if (document.selection) {
                 this.focus();
                 sel = document.selection.createRange();
                 sel.text = myValue;
                 this.focus();
             } else
             //!IE
             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);

 

IE下可以通过document.selection.createRange();来实现,而Firefox(火狐)浏览器则需要首先获取光标位置,然后对value进行字符串截取处理。
$(selector).insertAtCaret("value");  

 

关闭

用微信“扫一扫”