2016-09-10 12 views
1

こんにちは私はフォームを検証するためにJQueryフォームバリデーターを使用しています。ノックアウトjsを使用してボタンを使用して関数を呼び出すと、ボタンをクリックするとノックアウトjs関数を呼び出す必要がありますまた、同時にすべてのフィールドが有効であるかどうかをチェックすると、すべてのフィールドが検証されるまで何もしないでください。 jqueryバリデータフォームのリンクhttp://www.formvalidator.net/#advanced_programmaticallyボタンプレスで自動的に検証

ここには、関数を呼び出すフィールドとボタンがあります。

<input type="text" name="birthday" data-validation="date" data-validation-format="yyyy-mm-dd" placeholder="yyyy-mm-dd" data-validation-help="You must be more than 20 years old" class="form-control" value="<?php if (isset($user['Birthday'])) {echo $user['Birthday'];} ?>"> 
<div data-bind="ifnot: (loggedIn() == 'true')"> 
      <button data-bind="click : openUpTwoStepAuth " type="submit" id="openUpTwoStepAuth" class="btn registerbtn"> 
       <?php echo lang("register_continue_btn"); ?> 
      </button> 
     </div> 

そしてここで、すぐにボタンがクリックされていますが、私の場合には、それは検証をチェックしませんし、AJAX呼び出しと進むにつれて検証を呼び出そうとノックアウトjsの関数です。

self.openUpTwoStepAuth = function(){ 
      $('#openUpTwoStepAuth').validate(function(valid, elem) { 
       if(!valid){ 
        return; 
       } 
      }); 
      self.emailtokenconfirmation(false); 
      self.tokenError(null); 
      self.showTwoStepAuth(); 
      $.ajax({ 
       type: 'POST', 
       url: BASEURL + 'index.php/myprofile/sendEmailForTwoStepAuth/', 
       contentType: 'application/json; charset=utf-8', 
       data: ko.toJSON({customerEmail : self.customerEmail()}) 
      }) 
      .done(function(data) { 
       if(data.success){ 
        self.emailtokenconfirmation(true); 
       }else{ 
        self.tokenError(data.result); 
       } 
      }) 
      .fail(function(jqXHR, textStatus, errorThrown) { 
       alert("Error code thrown: " + errorThrown); 
      }) 
      .always(function(data){ 

      }); 
     } 

その普通のボタンは、コード

<script> 
    $.validate({ 
    modules : 'toggleDisabled', 
    disabledFormFilter : 'form.toggle-disabled', 
    showErrorDialogs : false 
    }); 
</script> 

のこの作品を提出する関数を呼び出す場合、それは正常に動作しますが、私のために、私はjsの関数を呼び出すと同時に、検証を確認したいですフィールドの。

+0

検証が成立するところにajaxを配置してください。 'if(!valid){return} else {//あなたのajax}'。あなたは 'knockout 'を使いたいかもしれません。バリデーションを行うために延長する。あなたがノックアウトを使用しているので –

+0

@ Matt.kaajは、私がconsole.log(有効)をチェックすると、戻り値がないことです – FaF

答えて

0

これはすでに成功し、検証であなたのビューモデルの機能を呼び出すための検証にはここ

Knockout + Jquery Validate

使用submitHandlerに答えているようです。

関連する問題