Form_for

hi everybody…
I have a form_for in that, onclicking submit button i am calling
a javascript for validation.If validation fails that form_for doesnt do
anything.But even the validation fails it goes to the controller and
action.
here my code:
<%form_for :promotion_code,
:url=>{:controller=>“home”,:action=>“create”,:discount_id=>product.discount.id,:id=>@ad.id}
do |f|%>
<%=f.radio_button :isemail,“true”,:checked=>true%>Email

<%=f.radio_button :isemail, “false”%>Sms
<%=f.text_field :email_or_mobile,:size=>20%>
<%=f.submit “Generate”, :onclick=>“ValidateForm()”%>
<%end%>

on validation failure it doesn’t go to the :action

please help me…

You need to move the :onclick => “ValidateForm()” to :onsubmit =>
“ValidateForm()” in the form_for line. Then when the ValidateForm
returns false it will halt submission of the form.

You might want to consider using something like this:
http://www.livevalidation.com/

There’s a Rails plugin as well:

Cheers,
Nicholas

On Tue, Aug 4, 2009 at 4:38 AM, Md Fisa
[email protected]wrote:

do |f|%>
<%=f.radio_button :isemail,“true”,:checked=>true%>Email

<%=f.radio_button :isemail, “false”%>Sms
<%=f.text_field :email_or_mobile,:size=>20%>
<%=f.submit “Generate”, :onclick=>“ValidateForm()”%>
<%end%>

on validation failure it doesn’t go to the :action

please help me…

Hi, I think that you really want the onclick handler on the form element
instead of the
input tag. Then the following should work for you:

<%form_for :promotion_code,
:url =>
{:controller=>“home”,:action=>“create”,:discount_id=>
product.discount.id,:id=>@ad.id },
:html => { :onclick => “return ValidateForm();” } do |f|%>

<%=f.radio_button :isemail,“true”,:checked=>true%>Email
<%=f.radio_button :isemail, “false”%>Sms
<%=f.text_field :email_or_mobile,:size=>20%>
<%=f.submit “Generate”, :onclick=>“ValidateForm()” %>

<%end%>

Lastly, you can read more on the use of the :html symbol by referring to
section 23.5 of AWDwR 3ed.

Good luck,

-Conrad

Nicholas H. wrote:

You need to move the :onclick => “ValidateForm()” to :onsubmit =>
“ValidateForm()” in the form_for line. Then when the ValidateForm
returns false it will halt submission of the form.

You might want to consider using something like this:
http://www.livevalidation.com/

There’s a Rails plugin as well:
GitHub - porras/livevalidation: Client-side validations for Ruby on Rails (using javascript library livevalidation.com)

Cheers,
Nicholas

Thanks for yor reply …
I applied what you said.But its not getting.When i am giving :onsubmit
it doesn’t check for validation.It directly go to the action without
doing any validation.When validation return false it shouldn’t execute
the action.Your reply appreciated…Thanks verymuch

On Tue, Aug 4, 2009 at 9:34 PM, Md Fisa
[email protected]wrote:

GitHub - porras/livevalidation: Client-side validations for Ruby on Rails (using javascript library livevalidation.com)

Cheers,
Nicholas

Thanks for yor reply …
I applied what you said.But its not getting.When i am giving :onsubmit
it doesn’t check for validation.It directly go to the action without
doing any validation.When validation return false it shouldn’t execute
the action.Your reply appreciated…Thanks verymuch

Hi, please post the Javascript that’s performing the validation?

-Conrad

On Tue, Aug 4, 2009 at 7:16 AM, Conrad T. [email protected]
wrote:

<%form_for :promotion_code,
on validation failure it doesn’t go to the :action
product.discount.id,:id=>@ad.id },
section 23.5 of AWDwR 3ed.

Good luck,

-Conrad

The correct javascript handler to use would be onsubmit as Nicholas
Henry
recommends. Thus, the above
code has been corrected with this in mind as well as removing the typo.

-Conrad

And please post the form_for code.

Thank you.