關鍵是要得到光標位置可靠。我發現如何從現有的SO thread做到這一點。一旦你有了光標位置,只需要獲得文本前後的內容,然後在中間插入新值。
http://jsfiddle.net/Vr99u/1/
$("#mybutton").click(function() {
var pos = getCaret(document.getElementById('mytextarea'));
var currentText = $("#mytextarea").val();
var currentTextStart = currentText.substr(0, pos);
var currentTextEnd = currentText.substr(pos, currentText.length);
var newText = currentTextStart + $("#myselect").val() + currentTextEnd;
$("#mytextarea").val(newText); });
function getCaret(node) {
if (node.selectionStart) {
return node.selectionStart;
} else if (!document.selection) {
return 0;
}
var c = "\001",
sel = document.selection.createRange(),
dul = sel.duplicate(),
len = 0;
dul.moveToElementText(node);
sel.text = c;
len = dul.text.indexOf(c);
sel.moveStart('character',-1);
sel.text = "";
return len;
}
是的..你的鏈接http://jsfiddle.net/Vr99u/1/是usful我 太赫茲mrtsherman – kmith