2012-02-17 79 views
1

我試圖建立的validval插件(最新4.0.0)版本,並沒有任何運氣...如何手動觸發jquery-mobile表單驗證的validval插件?

這是我在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說。所以我現在綁定點擊,並想「手工」開火我的例程。這意味着我還需要使用觸發器來觸發validval--至少它在website上這麼做。問題是,validval不會像這樣開火。我不知道爲什麼?

問題
我怎樣才能觸發validVal()形式驗證從我的點擊處理程序內?或者,如果我改回綁定提交,我怎樣才能確保表單不會自動提交遺忘?

希望信息充足&大感謝您的幫助!

回答

2

好的。發現我自己......總是在做#2長的帖子後會發生......

您需要更換triggerhandler簡單觸發,然後validval將閃光。您可以觸發submitForm事件(在v4.0.0中折舊)或submitForm.vv事件,這似乎是要調用的正確事件。

也許對別人有幫助。

+0

謝謝,我剛纔遇到了一個障礙,但在我感到沮喪之前,你爲我節省了很多時間:) – JoshGough 2012-12-15 19:30:35