aspx中的form如下:
<form id="Login" method="post" runat="server" onsubmit="fncDisableBtn();">aspx.cs中加了如下代码:
this.GetPostBackEventReference(btnAdd); //btnAdd是一个按钮的名字javascript代码:
function fncDisableBtn()
{
var e_all = document.all.tags('INPUT');

for(i=0;i<e_all.length;i++) 

if (e_all[i].type == 'submit')
{
e_all[i].disabled = true;
}
}
__doPostBack('btnAdd','');
}现在的效果是:点了btnAdd后,能把所有按钮都变灰了,并且能调用btnAdd按钮的onclick后台代码。我现在的问题是:画面上有很多按钮,每一个都可能提交数据,触发form的onsubmit,所以我得调用该按钮对应的后台代码,在__doPostBack('btnAdd','');函数中不能写死为btnAdd,而应该是触发事件的按钮名字。但是不知道怎么能得到这个按钮的名字?

解决方案 »

  1.   

    所有提交页面的Btton的事件指向一个事件,比如btnAdd_CLick,其它按钮的CLICK事件也指向这里.
      

  2.   

    <asp:Button id="Button9" runat="server" Text="Button"></asp:Button>
    <asp:Button id="Button10" runat="server" Text="Button3"></asp:Button> /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {     this.Button9.Click += new System.EventHandler(this.Button9_Click);
    this.Button10.Click += new System.EventHandler(this.Button9_Click);
    this.Load += new System.EventHandler(this.Page_Load); } private void Button9_Click(object sender, System.EventArgs e)
    {
        //...............
    }
      

  3.   

    现在很多代码都已经完成了,最后要加一个这功能,如果照你这样改,改动量太大。能不能在javascript中找出这个按钮的名字呢?
      

  4.   

    每一个需要提交的按钮都加一个
    this.Button1.Attributes.Add("onclick","fncDisableBtn()");不就行了吗?
      

  5.   

    我正在试,感觉zhangyu028(天哪,这么多人)老兄的应该可以,但是得传参数进去。
    函数改成了:function fncDisableBtn(btnName)
    aspx.cs中增加了:this.btnAdd.Attributes.Add("onclick","fncDisableBtn(this)");但是,用__doPostBack(btnName,'');时候出错了,不响应后台函数。
    各位在帮忙看看该怎么写。
      

  6.   

    这样试试
    <form id="Login" method="post" runat="server" onsubmit="fncDisableBtn(btnName);">aspx.cs中加了如下代码:
    this.GetPostBackEventReference(btnAdd); //btnAdd是一个按钮的名字javascript代码:
    function fncDisableBtn(btnName)
    {
    var e_all = document.all.tags('INPUT');

    for(i=0;i<e_all.length;i++) 

    if (e_all[i].type == 'submit')
    {
    e_all[i].disabled = true;
    }
    }
    __doPostBack(btnName,'');
    }在aspx.cs的PageLoad里加入下列代码
    if (!IsPostBack)
    {
        Button1.Attributes.Add("onclick","fncDisableBtn('Button1')");
        Button2.Attributes.Add("onclick","fncDisableBtn('Button2')");
        .............
    }
    这样的话就可以根据名字来触发了
      

  7.   

    private void page_load(.....)
    {
    this.btnAdd.attributes.add("onclick","fncDisableBtn()");
    }
      

  8.   

    <form id="Login" method="post" runat="server">onsubmit="fncDisableBtn(btnName)"去掉它.
      

  9.   

    aspx.cs中加了如下代码:
    this.GetPostBackEventReference(btnAdd); //btnAdd是一个按钮的名字
    btnAdd也是固定的?如果这样那不行的.如果不是固定的那就是你为每个按钮都写了事件?功能一样每个按钮都写一遍?这样不更麻烦? 我觉得还是试试我的第一种方法好.很多按钮触发同一个事件.
      

  10.   

    最后能实现我想要的功能的代码:
    aspx中:去掉form中的函数onsubmit="fncDisableBtn();",如下:
    <form id="Login" method="post" runat="server">aspx.cs中的代码:this.GetPostBackEventReference(btnAdd); 
    this.btnAdd.Attributes.Add("onclick","fncDisableBtn('btnAdd')");this.GetPostBackEventReference(btnReset); 
    this.btnReset.Attributes.Add("onclick","fncDisableBtn('btnReset')");javascript代码:function fncDisableBtn(btnName)
    {
    var e_all = document.all.tags('INPUT');

    for(i=0;i<e_all.length;i++) 

    if (e_all[i].type == 'submit')
    {
    e_all[i].disabled = true;
    }
    }
    __doPostBack(btnName,'');
    }谢谢各位了,马上给分。