如何为jquery-mobile表单验证手动触发validval插件?

时间:2012-02-17 09:54:50

标签: jquery html5 plugins jquery-mobile validation

我正在尝试设置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');
                      }
                    } 
               }); 
           }
       }); 

这应该在pageshow上设置表单验证。

现在我绑定了提交按钮:

  $("#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说什么,表单总是立即提交。所以我现在绑定到click并希望“手动”解雇我的例行程序。这意味着我还需要使用 triggerhandler 来激活validval - 至少它会在website上执行此操作。问题是,validval不会像这样开火。我不知道为什么?

问题
如何从我的click-handler中触发validVal()表单验证?或者,如果我改回绑定提交,我怎样才能确保表单不会自动提交到遗忘?

希望信息充足&amp;非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

确定。自己找到它...总是发生在Stackoverflow上做了很长的帖子......

您需要将 triggerhandler 替换为简单的触发器,然后才会触发validval。您可以激活 submitForm 事件(在v4.0.0中折旧)或 submitForm.vv 事件,这似乎是要调用的正确事件。

也许对其他人有帮助。