Как вручную запустить плагин validval для проверки формы JQuery-Mobile? - PullRequest
1 голос
/ 17 февраля 2012

Я пытаюсь настроить плагин validval (последняя версия 4.0.0) и мне не повезло ...

Вот что у меня есть в HTML

<form name="LoginForm" id="LoginForm" data-transition="slide" action="somepage.html" method="post">
   // ... text inputs
   <input type="submit" id="CheckLogin" name="CheckLogin" value="Login" data-theme="e" />
</form>

И Jquery :

 // tried pageinit and pageshow
 $('div:jqmData(role="page")').live('pageshow', function() {

   $(this).find('form').each(function() {
      // call once
      if ( $(this).find('.required').length > 0 && $(this).attr('valed') != 'on') {
          // flag and validVal
          $(this).attr('valed', 'on').validVal({
             'validate': {  'onBlur': false },
             'customValidations': {  },
             'form': {
                  'onValid': function( $form, language ) {
                      console.log("form ok");
                      },
                   'onInvalid': function( $form, language ) {   
                      console.log("form not ok");
                      // attach an error to form
                      $(this).attr('error', 'yes');
                      }
                    } 
               }); 
           }
       }); 

Это должно настроить проверку формы на страницах.

Теперь я привязываюсь к кнопке отправки:

  $("#CheckLogin").click( function(event) {
        event.preventDefault();

        // call validval 
        // DOES NOT WORK, cause validval() doesn't fire like this
        var errors = $("#CheckLogin").triggerHandler( "submitForm.vv" );    
        console.log( errors );

        // alternative, check for attached errors
        // DOES NOT WORK, cause validval() doesn't fire on click

        // ... my routine running if there are no errors

        // Submit
        // document.LoginForm.submit() 
        });

Проблема в том, что если я связываюсь с отправкой, проверка работает, но форма всегда отправляется сразу, независимо от того, чтовалидвал говорит.Так что теперь я обязуюсь кликнуть и хочу запустить свою рутину "вручную".Это означает, что мне также нужно запустить validval с помощью triggerhandler - по крайней мере, он говорит об этом на их веб-сайте .Проблема в том, что validval не срабатывает так.И я понятия не имею, почему?

Вопрос :
Как я могу запустить валидацию формы validVal () из моего обработчика кликов?Или, если я вернусь к привязке для отправки, как я могу убедиться, что форма автоматически не отправляется в забвение?

Надеюсь, что информации достаточно и большое спасибо за помощь!

1 Ответ

2 голосов
/ 17 февраля 2012

Хорошо.Сам нашел ... всегда происходит после длинного поста в Stackoverflow ...

Вам нужно заменить triggerhandler на простой триггер , тогда validval сработает.Вы можете вызвать событие submitForm (устарело в v4.0.0.) Или событие submitForm.vv , которое кажется правильным для вызова.

Может быть, полезно и кому-то еще.

...