8

I feel like i've done this scenario plenty of times, and it usually works, so im obviously missing something.

Here's my server-side ASP.NET Button:

<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" />

Which get's rendered on the client as:

<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo">

No surprises there.

Here's the surprise, in my JavaScript function:

function foo_Click() {
   return false;
}

Okay so there's more to it than that, but i cut it down to prove a point.

When i click the button, it calls the client-side function, and returns false.

But it still posts back to the server, why?

I basically want to do this on the click of the button:

  1. Do client-side validation.
  2. If validation passes, post back
  3. If not, show some error messages on the form.

Of course, i could change this to an client-side button (input type="button") and manually kick off the postback when i want, but i shouldn't need to do that. Or should i?

1 Answer 1

21

write return statement so when you click on button it return false which not allow to submit form

 <asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" 
OnClientClick="return foo_Click();" />
Sign up to request clarification or add additional context in comments.

4 Comments

Knew it was obvious (slaps head). Thanks.
I just noticed that if i do "var passedValidation = new Boolean(false); return passedValidation" it still posts back. But if i just do return false, it doesnt. WTF? any ideas?
@RPM1984: Using the Boolean constructor, with the new keyword, creates a Boolean object wrapper, and in JavaScript any object is considered to be truthy when used in boolean context, for example: !!new Boolean(false) ==> true, I would recommend you to simply use the boolean true or false literals, which represent directly primitive values...
@CMS - yep, i figured that. well that kinda sucks, oh well - ill stick to the basic. thanks for the clarification.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.