【问题标题】:Using Jquery in UserControl with MasterPage在带有 MasterPage 的 UserControl 中使用 Jquery
【发布时间】:2011-02-13 01:27:17
【问题描述】:

我似乎无法让 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;
}

我的 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 上的脚本)。似乎没有任何效果。

更新:

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

【问题讨论】:

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


    【解决方案1】:

    尝试将选择器更改为这样的:

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

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

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

    【讨论】:

    • 谢谢 Jason,你的语法有点不对,但我已经试过了。它仍然返回“未定义”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    相关资源
    最近更新 更多