2012-03-26 2 views
3

Я использую встроенную функцию для отправки формы, но она не вызывает сценарий проверки, который у меня есть, и я задавался вопросом, может ли кто-нибудь указать мне в правильном направлении ответа?

Моя кнопка:

<a href="javascript:UpdateEnquiry();" id="continue_btn" class="btnSprite">Save</a> 

Моя функция:

function UpdateEnquiry() { 

$.ajax({ 
    url: 'test.php', 
    dataType: 'xml', 
    timeout: 15000, 
    type: 'post', 
    data: $('#validate').serialize(), 
    success: UpdateEnquirySuccess, 
    error: function (result) {parent.$.fancybox.close();} 
    }); 
} 

И я хотел бы инициализировать JQuery validationEngine плагин, прежде чем представить. http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

Любая помощь была бы чрезвычайно оценена.

Сердечные приветы Рейчел

ответ

4

Предполагая, что ваш двигатель проверка уже инициализирован, вызовите метод validate перед выполнением запроса Ajax. Если этот метод возвращает true, вы приступите:

function UpdateEnquiry() { 
    if ($(yourForm).validationEngine('validate')) { 
     $.ajax({ 
      ... 
     }); 
    } 
    else { 
     // The form didn't validate 
    } 

    return false; // Prevents default action from happening 
} 
+0

Большое спасибо! Я часто нахожу, что я слишком усложняю решения, поэтому приношу извинения за полный вопрос noobie ... – Rachel

+0

это не работает ... Его неправильная форма ответа всегда ложна. Ajax не запускается. – jack

+0

@jack Что именно не так с моим ответом? 'validationEngine ('validate')' будет возвращать 'true', если форма проверяет, согласно [документам] (http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation -is-a-mess /), если он всегда возвращает 'false': а) ваша форма неверна; или б) плагин ошибочен. Если мне что-то не хватает, просьба дать более подробную информацию, поэтому я могу исправить ответ. – mgibsonbr

4
$('#registerform').submit(function(e) { 
       e.preventDefault(); 
       var vars = $("#registerform").serialize(); 

       if ($("#registerform").validationEngine('validate')) { 

        $.ajax({ 
          url:"sample.php" 
        }); 

       } 
      }); 

без остановки действия по умолчанию я был перенаправлять на мою страницу формы действий. Поэтому пришлось использовать preventdefault(). @mgibsonbr my bad

+0

Итак, я получаю это сейчас, независимо от того, проверена форма или нет, действие по умолчанию не должно происходить - поскольку оно будет заменено вызовом Ajax. Я действительно пропустил эту деталь, спасибо, что указал на это! – mgibsonbr

+0

надеюсь, что вы можете нажать на полезную ссылку :) – jack

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