任何人都可以帮我吗?
我有一个.aspx页面,设计有两个文本区域控件和一个列表框控件。
<td>
<p>Base Entity Attributes</p>
<select name="drop1" id="SelectGroupApiS" size="4">
</select>
</td>
<td>
<p>REQUEST XML</p>
<textarea id="txtAreaRequest" rows="" cols=""></textarea>
</td>
<td>
<p>RESPONSE XML</p>
<textarea id="txtAreaResponse" rows="" cols=""></textarea>
</td>
当我点击任何列表框项目时,我使用jquery将listitem的当前文本设置在TextArea中。但我希望文本位于包含光标位置的文本框中。 目前我做的是单文本框。我现在想要在包含光标位置的两个文本框之一中显示文本。
如何让它成功?
帮帮我吧
答案 0 :(得分:0)
一种可能的解决方案是拥有最后一个焦点的textarea句柄,并在单击lsit项时使用此句柄。
即。
之类的东西var $focusTA = null;
$('textarea').focus(function() {
$focusTA = $(this);
});
并且
$focusTA.insertAtCaret($('#lis>option:selected').text());
用于设置文本。
答案 1 :(得分:0)
小提琴http://jsfiddle.net/tariqulazam/LBkcV/
<强> HTML 强>
<td>
<p>Base Entity Attributes</p>
<select name="drop1" id="SelectGroupApiS" size="4">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</td>
<td>
<p>REQUEST XML</p>
<textarea id="txtAreaRequest" class="tarea" rows="" cols=""></textarea>
</td>
<td>
<p>RESPONSE XML</p>
<textarea id="txtAreaResponse" class="tarea" rows="" cols=""></textarea>
</td>
<强>的JavaScript 强>
var activeArea;
$(document).ready(function(){
activeArea = $("#txtAreaRequest");
});
$(".tarea").click(function(){
activeArea = $(this);
}).focus(function(){
activeArea = $(this);
});
$("#SelectGroupApiS").change(function(){
$(activeArea).append($("#SelectGroupApiS option:selected").val());
});
答案 2 :(得分:0)
如果我理解你的问题,你可以这样做:
$(document).ready(function(){$('#txtAreaRequest').focus()});
var dataTB = [];
$('textarea').blur(function() {
dataTB[0] = this;
dataTB[1] = getCaret(this);
});
$('#SelectGroupApiS').change(function() {
var valTB = $(dataTB[0]).val(); $(dataTB[0]).val(valTB.substring(0,dataTB[1])+$('option:selected',this).text()+valTB.substring(dataTB[1]));
});
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;
}