jQuery - 文本插入textarea有时只能工作

时间:2014-03-11 18:44:55

标签: jquery textarea

我不清楚为什么这似乎只是零星的工作。

我正在尝试创建一个按钮,允许用户将文本插入光标位置的文本区域。只要他们没有在textarea中键入它就可以工作,但是一旦他们键入,按钮就会停止运行。

脚本中的JS对象使用这两种方法来分割文本,然后输入它从单击按钮的“隐藏”范围中抓取的文本。

它应该改变:

<newform>
    <box>
    </box>
</newform>

...在光标所在的位置包含额外的框标签。

<newform>
    <box>
    </box>
    <box> //as if the cursor was here
    </box>
</newform>

其他按钮目前无法使用。这是一个较大项目的复制品。

//returns an array where array[0] is text before the cursor
//and array[1] is the text after the cursor
split_at_cursor: function (element) {
    var $el = $(element).get(0);
    var split_pt = $el.selectionStart;
    return [$el.value.substring(0, split_pt), $el.value.substring(split_pt)];
},

//uses split_at_cursor to insert data at the cursor's location
insert_at_cursor: function (element, to_insert) {
    if (typeof (to_insert) !== "string") {
        //this is going to change
        to_insert = '*ERROR*';
    }
    var $el = $(element);
    $el.focus();
    var split_string = fmlpad.split_at_cursor($el);
    $el.text(split_string[0] + to_insert + split_string[1]);
},

查看完整有效的非工作示例here

我已经尝试了一些控制台日志记录,看看问题的性质可能是什么,但看起来它总是正确地确定文本应该去哪里,以及插入的文本应该 - 它实际上并不总是插入! :/

另外,我意识到我可能会使用一些过多的$(some_element)来电,但我不确定问题就在那里,一旦应用程序变得更紧凑和更好,这些问题就会出现定义

1 个答案:

答案 0 :(得分:0)

&#39;价值&#39;需要设置文本区域,而不是“&#39;文本”。

如果您使用val()代替:

,那么您将获得更多运气
$el.val(split_string[0] + to_insert + split_string[1]);

按钮按下后跳转时仍需要对光标位置进行一些操作,但我已更新小提琴以显示此工作:JSFiddle