Frage

Hallo, ich fiel vor kurzem in der Liebe mit einer erweitern Upload-Tasten-Steuerung Ich fand hier , dass, wenn sie zusammen mit einem aspnet Datei-Upload-Steuerelement verwendet, Uploads in einem gmail artig durchführen kann. Das einzige Problem ist, dass, wenn die Steuerung auf einer Seite platziert wird ein beliebige Taste auf dieser Seite wird das Click-Ereignis der erweiterten Steuerung auslösen.

Ich hatte keine Ahnung, warum dies geschieht, bis ich auf dem Quellcode sah.

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

Von dem, was ich das Problem liegt in der Steuerung sammeln kann die Registrierung des ‚onsubmitstatement ‘ für alle Bedienelemente auf den Seiten d.h bilden 'document.forms [0]' . Jetzt habe ich sehr begrenzte Erfahrung benutzerdefinierte Steuerelemente in Authoring, so dass alle meine Bemühungen, den ‚onsubmitstatement‘ registrieren nur für die Upload-Steuerung ausgefallen z

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

kann jemand mir helfen? Gibt es eine Möglichkeit zu registrieren die onsubmit Funktion nur für diese Kontrolle?

War es hilfreich?

Lösung

Wir müssten wissen, was genau AIMScript.js tatsächlich tut wirklich die Frage zu beantworten.

Die Grundidee ist aber, dass Sie brauchen JavaScript zu ändern, damit es es die Sache auf dem Click-Ereignis für eine bestimmte Taste der Fall ist, anstatt das Ereignis für das gesamte Formular abfängt. Aber es könnte sein, dass diese besondere Javascript in einem Formular-Elemente in einigen anderen Möglichkeiten zu abhängig sein könnte.

Es könnte so einfach sein wie die Registrierungen zu ändern, um nur eine Javascript doClick Funktion wie folgt registrieren:

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

Dann auf der tatsächlichen Tastensteuerung, Draht es bis rufen Sie die neue doClick () JavaScript-Funktion Sie oben --like dies registriert:

<input type="button" value="ClickMe" onclick="DoClick()" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top