【问题标题】:Adding code blocks in javascript function在javascript函数中添加代码块
【发布时间】:2015-07-08 15:51:12
【问题描述】:

当我单击一个按钮时,我试图通过 javascript 设置 ASP TextBox 的值,但我无法使用代码块获取我的 TextBox 控件的 ClientID。

我得到这个错误:

无法修改 Controls 集合,因为该控件 包含代码块(即 )

这是我的 .aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="App.aspx.cs" Inherits="StatsWeb.App" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="Styles/Site.css" rel="Stylesheet" type="text/css" />
    <script>
        function testf() {
            alert("here");
            document.getElementById('<%= TextBox1.ClientID %>').value = "asd";
            return false;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Menu ID="Menu1" runat="server" DataSourceID="XmlDataSource1" 
            CssClass="Menu" StaticDisplayLevels="2" MaximumDynamicDisplayLevels="5" >
            <DataBindings>
                <asp:MenuItemBinding DataMember="rule" TextField="name" ValueField="value"/>
                <asp:MenuItemBinding DataMember="splitByField" TextField="name" ValueField="value" NavigateUrl="javascript:testf()"/>
                <asp:MenuItemBinding DataMember="splitByObject" TextField="name" ValueField="value"/>
                <asp:MenuItemBinding DataMember="statDefinition" TextField="name" ValueField="value"/>
            </DataBindings>
        </asp:Menu>
        <asp:XmlDataSource ID="XmlDataSource1" runat="server" 
            DataFile="~/App_Data/stats.xml"></asp:XmlDataSource>
        <asp:Literal ID="Message" runat="server" Text="Status:"></asp:Literal>
        <asp:TextBox ID="TextBox1" runat="server" EnableTheming="True" Height="137px" 
            Rows="6" TextMode="MultiLine" Width="842px"></asp:TextBox>

    </div>
    </form>
</body>
</html>

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    替换

    <asp:MenuItemBinding DataMember="splitByField" TextField="name" ValueField="value" NavigateUrl="javascript:testf()"/>
    

    <asp:MenuItemBinding DataMember="splitByField" TextField="name" ValueField="value" OnClientClick="return testf()"/>
    

    【讨论】:

    • 无法将 OnClientClick 添加到 MenuItemBinding。此外,代码确实到达了 javascript 函数,如果我删除了警报执行的 getElementById 行,那么问题是代码块没有正确评估。
    • 尝试将它们分成两行。在第一行获取元素并在第二行设置值
    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2011-08-21
    • 2017-01-30
    相关资源
    最近更新 更多