我想通过javascript做一些客户端校验,代码如下:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="tt201010.aspx.cs" Inherits="tt201010" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <script language="javascript" type="text/javascript"> 
        function Test()
        {
            alert("aaaa");
        }
    </script>  
    <table style="width: 425px; height: 267px">
        <tr>
            <td style="height: 26px;" colspan="2">
                <asp:TextBox ID="txtDevelopName" runat="server" OnTextChanged="Test()"></asp:TextBox></td>
        </tr>
    </table>
</asp:Content>
我想在OnTextChanged事件调用Test(),上面代码提示有错误,说Test()方法没定义,应该怎么写?

解决方案 »

  1.   

    试试看将方法放到js文件中,页面引用js文件,再调用看看呢.没用过继承母板页面,不好说,帮你顶了只有.顺便问下,继承母板的页面就没有head,body,form这些标签了?
      

  2.   

    在模板继承页中,没有head,body,form这些标签,这些标签在模板中,你把javascript大的方法全写在js文件中,在模板页中引用进来就可以了
      

  3.   

    在倒数第一行上面添加js文件引用就可以
    例如
    .....
    .....
       <script type="text/javascript" language="javascript" src="../js/WMS7090_01.js">
       </script>
    </asp:Content>
      

  4.   

    <asp:TextBox ID="txtDevelopName" runat="server" OnTextChanged="Test()"></asp:TextBox>runat="server"  我想在OnTextChanged事件调用Test(),上面代码提示有错误,说Test()方法没定义 
    不是母板也的问题 你这个OnTextChanged是服务器事件 而在cs文件中没有Test()方法 当然报错哦 
      

  5.   

    你写错了,应该是:
    <asp:TextBox ID="txtDevelopName" runat="server" onchange="Test()"></asp:TextBox>
      

  6.   

    我感觉应该可以呀
    写master里看看
      

  7.   

    在page_load中加
     if (!Page.IsPostBack)
            {
    txtDevelopName.Attributes.Add("onblur", "getFOBCost()");
    }
      

  8.   

    我查了一些资料,模板页的页面加载后,页面里原来的控件的 ID 不是以前的了,所以JS失效。我查看了一下我的页面,控件ID确实变了。
    我加了下面这句后,我的问题就可以解决了:
    <script language="javascript" type="text/javascript">
        document.aspnetForm.ctl00$ContentPlaceHolder1$txtDevelopName.onchange = btnAdd_clicked;
    </script>
    母板中的Form的名字由form1变成了aspnetForm,继承母板页面的textbox的名字由txtDevelopName变成了ctl00$ContentPlaceHolder1$txtDevelopName。不知道我上面这么写好不好,期待高人解答。
    to lishijie910123(): 你的方法,应该可行,我一会去试试。
      

  9.   

    那有这么复杂阿.
    document.getElementById('<%=txtDevelopName.ClientID%>').onchange=....; 
    就行了.
      

  10.   

    你的出错是因为<asp:TextBox ID="txtDevelopName" runat="server" OnTextChanged="Test()"></asp:TextBox>
    中的OnTextChanged用错了.只要把它改为
    <asp:TextBox ID="txtDevelopName" runat="server" onchange="Test()"></asp:TextBox>
    就行了.跟在母版中查找控件是两回事.