2009-07-13 12 views
1

Ich habe ein UserControl geschrieben, das eine Javascript-Funktion an die Submit-Schaltfläche eines Formulars anhängt. Die Javascript-Funktion stellt sicher, dass die Seite gültig ist, indem sie Page_IsValid aufruft und dann mit der Ausführung von Code fortfährt. Für die problematischen Seiten wird die Page_IsValid beim ersten Laden auf true gesetzt. Wenn ich das OnClientClick nicht festlege, wird Page_IsValid beim ersten Laden korrekt auf false gesetzt. Ich kann nicht herausfinden, warum Page_IsValid sich so verhält, da überhaupt keine Ereignisse ausgelöst werden. Es passiert auch nur auf einigen Seiten und nicht auf anderen. Es scheint, dass dies nur bei Seiten passiert, denen WebForm_DoPostBackWithOptions an ihre onclick-Ereignisse angehängt ist. Warum würde das Hinzufügen eines Klickereignisses den Unterschied ausmachen?Die Seite `_IsValid ist auf 'true' gesetzt, wenn 'OnClientClick' gesetzt ist

Hier ist mein Code:

Seite Server:

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

Hier ist der Code, der generiert wird:

Ohne 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> 

Mit 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

Meine Augen :(Ich würde Ihnen wirklich gerne helfen, wenn es einfacher zu lesen wäre ... – Amadeus45

Antwort

0

Sie haben

...return false; WebForm_DoPostBackWithOptions... 

in Ihrem OnClientClick so WebForm_DoPostBackWithOptions wird nie in Ihrem zweiten Beispiel genannt.

+0

Danke. Das kann sicherlich ein Problem sein. Die Validatoren werden jetzt aufgerufen, aber Is_PageValid gibt immer noch wahr zurück JS: Funktion disableSubmit() { if (typeof (Page_ClientValidate) == 'Funktion') { if (! Page_IsValid = null && Page_IsValid) { return DoSomething();} else { return true;} } else { zurück DoSomething(); } } Warum ist Is_PageValid auf True festgelegt? –

Verwandte Themen