在我的网络表单中,我有Textarea和链接按钮,如果我将光标放在该文本区域,则显示包含光标位置的弹出消息 下面是以下代码。但它没有显示任何内容
<textarea id="msgtxt" runat="server">the text is an example</textarea>
<a href="#" onclick="alert( $('#msgtxt').getCursorPosition() );
return false;">getCursorPosition</a>
我的jquery函数是
(function($, undefined) {
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if ('selectionStart' in el) {
pos = el.selectionStart;
} else if ('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
答案 0 :(得分:0)
默认情况下,您为textarea提供的id
不是客户端上的id
。客户端上的id
由ASP.net自动生成。您可以使用ClientID
property找出它的内容。因此,您需要通过$('#msgbox')
:
$('#<%=msgbox.ClientID%>')
<a href="#" onclick="alert( $('#<%=msgbox.ClientID%>').getCursorPosition() );
return false;">getCursorPosition</a>
或者,您可以在控件上使用ClientIDMode
告诉ASP.net使用id
作为客户端ID:
yourControlInstance.ClientIDMode = ClientIDMode.Static;
(还有其他模式,详见MSDN。)
答案 1 :(得分:0)
更改为此。
<强> HTML 强>
<a href="#" onclick="alert( getCursorPosition(this) );
<强> JS 强>
(function($, undefined) {
$.fn.getCursorPosition = function(obj) {
var txtAreaValue = $(obj).prev("input").val(); //add this
var el = $(this).get(0);
var pos = 0;
if ('selectionStart' in el) {
pos = el.selectionStart;
} else if ('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
在这个答案中,我在js函数中传递元素,然后在我用一个简单的jquery选择器找到textArea值之后。