如何将textarea id传递给jquery函数

时间:2014-06-14 08:37:38

标签: jquery asp.net

在我的网络表单中,我有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); 

2 个答案:

答案 0 :(得分:0)

默认情况下,您为textarea提供的id不是客户端上的id。客户端上的id由ASP.net自动生成。您可以使用ClientID property找出它的内容。因此,您需要通过$('#msgbox')

传递实际的客户ID,而不是$('#<%=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值之后。