2011-02-13 37 views
1

我似乎无法让Javascript在我的用户控件上工作。我想要做的就是计算多行文本框中的字符(这增加了另一个级别的复杂度)。我想计算字符并将其显示在标签中。在使用UserControl的MasterPage中使用jquery

我有我在.js文件中的javascript包含在母版:

function textCounter(field, countfield, maxlimit) { 
    var output = document.getElementById(countfield); 
    if (output == null) { return; } 

    if (field.value.length > maxlimit) 
     field.value = field.value.substring(0, maxlimit); 
    else 
     output.value = maxlimit - field.value.length; 
} 

我的用户有一些代码:

<script type="text/javascript" language="javascript"> 
    if (typeof contentPageLoad == 'function') { 
     var outputField = $("[id$='lblCharacterCount']"); 
    } 
</script> 


<asp:TextBox ID="txtMyTest" runat="server" Height="75px" CssClass="form-field full" TextMode="MultiLine" MaxLength="140" 
      onkeyup="textCounter(this, outputField, 140);" onkeydown="textCounter(this, outputField, 140);" ></asp:TextBox> 

<asp:Label ID="lblCharacterCount" runat="server"></asp:Label> 

outputField总是空当它试图执行功能。我试图在UserControl PageLoad,PreRender和PreInit的脚本块中添加它(UserControl上的脚本)。似乎没有任何工作。

UPDATE:

我能得到用户控件的Javascript工作的w/o一个UpdatePanel。这是问题,UserControl在UpdatePanel中。我已经放弃了在JS中使用UserControl的updatepanel,除非有人可以提供任何建议。

回答

0

尝试选择更改为这样的事情:

var outputField = $("#<% lblCharacterCount.ClientId %>"); 

您在控制设置的ID通常不是被分配给它在生成的HTML的ID。使用ClientId属性将为您提供该HTML标识。

当然,我还没有在一段时间使用ASP.NET,所以这个答案可能毫无价值。

+0

谢谢杰森,你的语法有点不合适,但我已经试过了。它仍然回来'未定义'。 – mokumaxCraig 2011-02-13 14:05:30

相关问题