2010-08-12 3 views
0

У меня есть форма Аякса почта какКак подтвердить форму Ajax Submit (remote_form_tag)?

- form_remote_tag :url=>mails_path,:condition=>"validate_mail()", :html => {:id=>"mailform",:method => :post, :class => 'ajax',:style=>"padding:15px;" } do |form| 
    .gimmespace 
     Naam 
     %br 
     = text_field_tag :name,params[:name],:class=>"title required" 
    .gimmespace 
     Telefoonnummber 
     %br 
     = text_field_tag :phone,params[:phone],:size=>25,:class=>"title" 
    .gimmespace 
     Mailadres 
     %br 
     = text_field_tag :email,params[:email],:size=>30,:class=>"title required" 
    .gimmespace 
     Onderwerp 
     %br 
     = text_field_tag :subject,params[:subject],:class=>"title required" 
    .gimmespace 
     Boodschap 
     %br 
     = text_area_tag :message,params[:message],:rows=>10,:cols=>45,:class=>"title required" 
    .gimmespace 
     = submit_tag "Verstuur",:id=>"mailsubmit",:class=>"sendBtn" 
     %button{:onclick=>"$.fn.colorbox.close();"} Annuleer 

Приведенный выше код в Haml. Он создает форму ajax для контроллера. Я должен проверять поля перед тем, как сделать отправку. Итак, я попробовал несколько вещей. Я прочитал эту статью http://hillemania.wordpress.com/2006/09/18/rails-ajax-pre-submit-form-validation/ и сделал перед обратным вызовом функцию проверки javascript для проверки. Вот функция проверки javascript.

function validate_mail() { 
     alert("Your Name, Email, Subject and Body Content are Required !"); 
     return false; 

} 

В соответствии с приведенной выше функции, она возвращает ложь каким-либо образом, и форма не должны получить представлены, но, он подает хорошо ajaxically. Есть ли другой способ, пожалуйста, помогите.

ответ

0

Я думаю, вы хотите использовать опцию :condition вместо опции :before. Что-то вроде этого:

- form_remote_tag :url=> mails_path, :condition => "validate_mail()", ... 

Тогда, если ваша condition функция возвращает ложь, форма не должна быть представлена.

Конечно, вам нужно изменить ваш validate_mail() функцию фактически проверить, что каждое поле формы не является пустым:

if ($('name').value == '' || $('phone').value == '' || ...) { 
    alert('Something was blank...'); 
    return false; 
} else { 
    return true; 
} 

Мой синтаксис Прототип ржавый - который должен получить Вас на правильном пути, хотя.

+0

Рельсы 2.3.8 docs говорят, что это:: условие Выполнять удаленный запрос условно этим выражением. Используйте это, чтобы описать условия браузера, когда запрос не должен быть инициирован ». .. Я сделал это, но все равно форма отправляется ... :( – Anand

+0

Можете ли вы опубликовать код, который генерируется 'form_remote_tag'? – nfm

Смежные вопросы