javascript - 在 UserControl 中使用 Jquery 和 MasterPage

标签 javascript user-controls textbox master-pages multiline

我似乎无法让 Javascript 在我的用户控件上运行。我想要做的就是计算多行文本框中的字符(这增加了另一个级别的复杂性)。我想计算字符数并将它们显示在标签中。

我的 javascript 位于 MasterPage 中包含的 .js 文件中:

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 在尝试执行该函数时始终为 null。我尝试将它(UserControl 上的脚本)添加到 UserControl PageLoad、PreRender 和 PreInit 的脚本 block 中。似乎没有任何作用。

更新:

我能够让 UserControl Javascript 在没有 UpdatePanel 的情况下工作。这就是问题所在,用户控件位于 UpdatePanel 中。我已经放弃在带有 JS 的 updatepanel 中使用用户控件,除非有人可以提供任何建议。

最佳答案

尝试将选择器更改为如下所示:

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

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

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

关于javascript - 在 UserControl 中使用 Jquery 和 MasterPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981841/

相关文章:

c# - FocusLost 在用户控制 [wpf]

css - 如何删除 Opera 中的文本框轮廓

c# - 在 asp.net 中遍历文本框 - 为什么这不起作用?

javascript - 将 HTML 实体放入 document.createTextNode

javascript - Angularjs:找不到通过ajax调用从服务器获取的表单

wpf - 当用户控件可见时将焦点设置为用户控件

javascript - 占位符 html 中的图像?

javascript - 如何使用 JavaScript 激活链接

javascript - 识别正则表达式中的多组开始标记、正文和结束标记

.net - 根据框大小绘制复选框刻度?