在主页的用户控件中使用Jquery

时间:2011-02-13 01:27:17

标签: javascript user-controls textbox master-pages multiline

我似乎无法使用Javascript来处理我的usercontrol。我想要做的就是计算 mulitline文本框中的字符(这增加了另一个复杂程度)。我想计算字符并将它们显示在标签中。

我在MasterPage中包含的.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;
}

我的UserControl代码很少:

<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 在尝试执行该函数时始终为null。我已经尝试在UserControl PageLoad,PreRender和PreInit的脚本块中添加它(UserControl上的脚本)。似乎没什么用。

更新

我能够通过UpdatePanel获得UserControl Javascript。这就是问题,UserControl在UpdatePanel中。我已经放弃在JS的updatepanel中使用Usercontrol,除非有人可以提供任何建议。

1 个答案:

答案 0 :(得分:0)

尝试将选择器更改为以下内容:

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

您在控件上设置的ID通常不是在生成的HTML中分配给它的ID。使用ClientId属性,将获得该HTML ID。

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