2009-07-13 7 views
1

J'ai écrit un UserControl qui attache une fonction Javascript au bouton d'envoi d'un formulaire. La fonction Javascript s'assure que la page est valide en appelant Page_IsValid puis continue à exécuter du code. Pour les pages problématiques, le Page_IsValid est défini sur true lors du premier chargement. Si je ne définis pas OnClientClick, Page_IsValid est correctement défini sur false sur le premier chargement. Je n'arrive pas à comprendre pourquoi Page_IsValid se comporte de cette manière, car aucun événement n'est déclenché du tout. En outre, cela n'arrive que sur certaines pages et pas d'autres. Il semble que cela n'arrive qu'aux pages WebForm_DoPostBackWithOptions attachées à leurs événements onclick. Pourquoi simplement ajouter un événement de clic fait une telle différence?Page`_IsValid est défini sur true si OnClientClick est défini

Voici mon code:

côté serveur:

(control as Control).OnClientClick = "disableSubmit(); return false;"; 

Voici le code qui est généré:

Sans OnClickEVent:

<input type="image" name="ctl00$wpm$CheckoutPage$ctl02$ContinueButton" 
    id="ctl00_wpm_CheckoutPage_ctl02_ContinueButton" 
    src="../images/continue.gif" alt="Continue" 
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
    &quot;ctl00$wpm$CheckoutPage$ctl02$ContinueButton&quot;, &quot;&quot;, true, 
    &quot;OPC&quot;, &quot;&quot;, false, false))" style="border-width:0px;" /> 
<br /><br /> 
</td> 

Avec OnClickEvent:

<tr id="ctl00_wpm_CheckoutPage_ctl02_trContinue"> 
    <td valign="top"> 
     <div id="ctl00_wpm_CheckoutPage_ctl02_AddressValidationSummary" 
      class="validationSummary" style="color:Red;display:none;"></div> 
    <br /> 
    <input type="image" name="ctl00$wpm$CheckoutPage$ctl02$ContinueButton" 
    id="ctl00_wpm_CheckoutPage_ctl02_ContinueButton" src="../images/continue.gif" 
    alt="Continue" onclick="disableSubmit(); 
    return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
    &quot;ctl00$wpm$CheckoutPage$ctl02$ContinueButton&quot;, &quot;&quot;, true, 
    &quot;OPC&quot;, &quot;&quot;, false, false))" style="border-width:0px;" /> 
    <br /><br /> 
    </td> 
</tr> 
+0

Mes yeux: (Je voudrais vraiment vous aider si ce serait plus facile à lire ... – Amadeus45

Répondre

0

Vous avez

...return false; WebForm_DoPostBackWithOptions... 

dans votre OnClientClick si WebForm_DoPostBackWithOptions est jamais appelé dans votre deuxième exemple.

+0

Merci Cela peut certainement être un problème Les validateurs sont maintenant appelés, mais Is_PageValid est toujours vrai. JS: fonction disableSubmit() { if (typeof (Page_ClientValidate) == 'fonction') { if (! Page_IsValid = null && Page_IsValid) { retour DoSomething();} else { return true;} } else { Retour Fait quelque chose(); } } Pourquoi Is_PageValid est-il défini sur true? –

Questions connexes