我不清楚为什么这似乎只是零星的工作。
我正在尝试创建一个按钮,允许用户将文本插入光标位置的文本区域。只要他们没有在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)
来电,但我不确定问题就在那里,一旦应用程序变得更紧凑和更好,这些问题就会出现定义
答案 0 :(得分:0)
&#39;价值&#39;需要设置文本区域,而不是“&#39;文本”。
如果您使用val()
代替:
$el.val(split_string[0] + to_insert + split_string[1]);
按钮按下后跳转时仍需要对光标位置进行一些操作,但我已更新小提琴以显示此工作:JSFiddle