0

こんにちは私は最近、aspnet ファイル アップロード コントロールと一緒に使用すると、gmail のような方法でアップロードを実行できる、ここで見つけた拡張アップロード ボタン コントロールに恋をしました。唯一の問題は、コントロールがページに配置されると、そのページの任意のボタンが拡張コントロールのクリック イベントをトリガーすることです。

ソースコードを見るまで、なぜこれが起こっているのかわかりませんでした。

/// 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);
        }

私が収集できることから、問題は、ページフォーム上のすべてのコントロール、つまり'document.forms[0]'に対して'onsubmitstatement ' を登録するコントロールにあります。現在、カスタム コントロールの作成経験は非常に限られているため、アップロード コントロールのみの「onsubmitstatement」を登録しようとする試みはすべて失敗しました。

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

誰でも私を助けることができますか?このコントロールのみに onsubmit 関数を登録する方法はありますか?

4

1 に答える 1

1

この質問に本当に答えるには、AIMScript.js が実際に何をしているのかを正確に知る必要があります。

ただし、基本的な考え方は、JavaScript を変更して、フォーム全体の送信イベントをインターセプトするのではなく、特定のボタンのクリック イベントで処理するようにする必要があるということです。しかし、この特定の 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()" />
于 2009-11-23T09:20:02.347 に答える