2

这个问题听起来很长,但我正在寻找一个真正简单的基本解决方案。

HTML:

    <textarea id="test">Hello world</textarea>

                  <a>change</a>

jQuery:

    $('a').click(function() {

        var htmlString = '<div class="football"></div>'
        var existing = jQuery('#test').text()

        $('#test').append().text(existing + htmlString).html();

    });

这会将现有文本附加到我的htmlString变量中,因为这是我应该如何htmlString在保留现有内容的同时添加到文本区域中,还是有更好的方法?

附加htmlString光标所在的位置对我来说也很重要,它在我的实时代码中更有意义,但你应该明白,这种在将这两个变量都像这样串起来的情况下击败了我的代码。所以我对一些想法持开放态度:)

这是一个小提琴,可以让您更好地了解该代码的作用FIDDLE

4

1 回答 1

3

更新的演示

(function ($) {
    $.fn.getCursorPosition = function () {
        var input = this.get(0);
        if (!input) return; // No (input) element found
        if ('selectionStart' in input) {
            // Standard-compliant browsers
            return input.selectionStart;
        } else if (document.selection) {
            // IE
            input.focus();
            var sel = document.selection.createRange();
            var selLen = document.selection.createRange().text.length;
            sel.moveStart('character', -input.value.length);
            return sel.text.length - selLen;
        }
    }
})(jQuery);

$('a').click(function () {
    var htmlString = '<div class="football"></div>';
    var txt = $('#test').text();
    var cur_pos = $('#test').getCursorPosition();
    if (cur_pos != 0) {
        $('#test').val(txt.substring(0, cur_pos) + htmlString + txt.substring(cur_pos + 1));
    }else{
        $('#test').val(htmlString + txt);
    }
});
于 2013-09-11T07:52:04.450 回答