问题注册onsubmit语句以进行扩展按钮控制

时间:2009-11-22 22:03:33

标签: asp.net onsubmit

您好我最近爱上了扩展上传按钮控件我发现here当与aspnet文件上传控件一起使用时,可以以类似Gmail的方式执行上传。唯一的问题是当控件放在页面上该页面上的任何按钮都会触发扩展控件的click事件。

在我查看源代码之前,我不知道为什么会发生这种情况。

/// Basic registration of events
        protected override void OnInit(EventArgs e)
        {
            this.Page.LoadComplete += new EventHandler(Page_LoadComplete);
            base.OnInit(e);
            this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "ScriptBlock", this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "WebControls.JScripts.AIMScript.js"));
            string cid = this.ClientID;
            string onsubmitstatement = "return AIM.submit( document.forms[0], {'onStart' : " + OnStartScript + ", 'onComplete' : " + OnCompleteScript + "})";
            this.Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "OnSubmitScript", onsubmitstatement);
        }

从我可以收集到的问题出在控制中为所有控件注册'onsubmitstatement ' 在页面上,即'document.forms [0]'。现在我在创作自定义控件方面的经验非常有限,所以我只为上传控件注册“onsubmitstatement”的努力都失败了,例如

string ctrlid = this.ClientID 
string onsubmitstatement = "return AIM.submit( document.getElementById('" + ctrlid + "'), {'onStart' : " + OnStartScript + ", 'onComplete' : " + OnCompleteScript + "})";

任何人都可以帮助我吗?有没有办法仅为此控件注册onsubmit函数?

1 个答案:

答案 0 :(得分:1)

我们需要知道AIMScript.js究竟在做什么才能真正回答这个问题。

但基本的想法是你需要更改javascript,以便它在特定按钮的click事件上执行它,而不是截取整个表单的submit事件。但可能是这个特定的javascript也可能在某些其他方面依赖于表单元素。

这可能就像更改注册只是注册一个javascript DoClick函数一样简单:

string onsubmitstatement = "function DoClick() {return AIM.submit( document.forms[0], {'onStart' : " + OnStartScript + ", 'onComplete' : " + OnCompleteScript + "})}";
this.Page.ClientScript. RegisterClientScriptBlock(this.GetType(), "OnSubmitScript", onsubmitstatement);

然后在实际的按钮控件中,将其连接起来调用您在上面注册的新DoClick()javascript函数 - 就像这样:

<input type="button" value="ClickMe" onclick="DoClick()" />