Mi sento come se avessi fatto questo scenario un sacco di volte, e di solito funziona, quindi ovviamente mi manca qualcosa.ASP.NET/JavaScript - Perché "Return False" non impedisce il postback?
Ecco il mio lato server Button ASP.NET:
<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" />
che vengono sta rendering sul client come:
<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo">
Nessuna sorpresa là.
ecco la sorpresa, nella mia funzione JavaScript:
function foo_Click() {
return false;
}
Va bene così ci sono più ad esso che quello, ma ho tagliato verso il basso per dimostrare un punto.
Quando faccio clic sul pulsante, chiama la funzione lato client e restituisce false.
Ma torna ancora al server, perché?
Io fondamentalmente voglio fare questo sul click del pulsante:
- Do convalida lato client.
- Se la convalida è superata, postback
- In caso contrario, visualizzare alcuni messaggi di errore nel modulo.
Naturalmente, potrei cambiare questo ad un pulsante sul lato client (type = "button" ingresso) e manualmente kick off il postback quando voglio, ma non avrei bisogno di farlo. O dovrei?
sapeva che era ovvio (schiaffi testa). Grazie. – RPM1984
Ho appena notato che se faccio "var passedValidation = new Boolean (false); return passedValidation" viene ancora postato. Ma se lo restituisco falso, non lo è. WTF? qualche idea? – RPM1984
@ RPM1984: Usando il costruttore 'Boolean', con la parola chiave 'new', crea un oggetto' Boolean' * object wrapper *, e in JavaScript qualsiasi oggetto è considerato * truthy * quando viene usato nel contesto booleano, ad esempio: ' !! new Boolean (false) '==>' true', ti consiglio di usare semplicemente i valori letterali boolean 'true' o' false', che rappresentano valori direttamente primitivi ... – CMS