Problème Enregistrement onsubmit déclaration pour le contrôle de touche prolongée

StackOverflow https://stackoverflow.com/questions/1780156

  •  21-09-2019
  •  | 
  •  

Question

Salut, je suis tombé amoureux récemment avec un téléchargement étendu contrôle J'ai trouvé ici que lorsqu'il est utilisé avec un contrôle de téléchargement de fichiers aspnet, peut effectuer les téléchargements d'une manière semblable à gmail. Le seul problème est que lorsque la commande est placée sur une page ne importe quel bouton sur cette page déclenche l'événement click du contrôle étendu.

Je ne savais pas pourquoi ce qui se passait jusqu'à ce que je regardais le code source.

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

D'après ce que je comprends le problème réside dans le contrôle l'enregistrement de la onsubmitstatement pour tous les contrôles sur les pages forment i.e. 'document.forms [0] . Maintenant, j'ai une expérience très limitée dans les contrôles authoring personnalisés de sorte que tous mes efforts pour enregistrer le « onsubmitstatement » pour que le contrôle de chargement a échoué par exemple

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

peut me aider? Est-il un moyen de enregistrer la fonction onsubmit pour que ce contrôle?

Était-ce utile?

La solution

Nous aurions besoin de savoir exactement ce AIMScript.js est en train de faire pour répondre vraiment à la question.

L'idée de base est que si vous avez besoin de changer le javascript il le fait est chose sur l'événement de clic pour un bouton particulier, plutôt que d'intercepter l'événement pour soumettre le formulaire. Mais il se pourrait que ce javascript particulier peut dépendre d'un élément de forme dans d'autres façons aussi.

Il pourrait être aussi simple que de changer les enregistrements pour enregistrer juste une fonction javascript DoClick comme ceci:

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

Ensuite, dans le bouton de commande réelle, câbler jusqu'à appeler la nouvelle fonction javascript DoClick () vous inscrit ci-dessus --like ceci:

<input type="button" value="ClickMe" onclick="DoClick()" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top