2017-09-09 13 views
0

ボタンが<form></form>タグの外側にあるときに、フォームの検証を行うことができないようです。どのように私はこれを達成することができる任意のアイデア?私は技術的な理由のためにそれをフォームの中に置くことはできません(それは、スティッキーなnavbarの中にあります)。ボタンがフォームタグの外にあるときにjQueryフォームが検証されない

私のHTMLマークアップ:

<form id="frm-shipping" class="frm-shipping" method="post"> 

    <input type="text" name="contact_phone" class="has_validation" 
    placeholder="Contact phone" value="" data-validation="required" 
    data-validation-error-msg="this field is mandatory!" > 

    <input type="text" name="first_name" class="has_validation" 
    placeholder="First Name" value="" data-validation="required" 
    data-validation-error-msg="this field is mandatory!" > 

</form> 

<button class="btn" onclick="nextStep();">Next</button> 

とjQueryコード:私はボタンをクリックすると

function nextStep() 
{ 

    $.validate({  
     form : '#frm-shipping',  
     borderColorOnError:"#FF0000", 
     onError : function() {  
     },  
     onSuccess : function() { 

      var params = $("#frm-shipping").serialize(); 
      // AJAX call here 

     } 
    }); 
} 

、何も起こりません。単純に何:(任意の提案ですか?

+0

をお試しください私は前にonsubmitを使うことを提案しましたが、それが勝ちました仕事はありません。 @BenMが示唆しているように、コードは「何も起こらない」というのはこの実装の有効な結果であると思われます。 –

+0

フォームをシリアライズする以外に、何もしません。 – BenM

+0

無関係なので何かする部分を削除します。フォームの中にボタンを置くと、それは機能します。私が外に動かすと、それはしません。 – user1996496

答えて

1

あなたはform属性を持つフォームにボタンを割り当てることができません。W3Schools exampleを参照してください。

<button class="btn" form="frm-shipping" onclick="nextStep();">Next</button> 

function nextStep() 
 
{ 
 
    $.validate({  
 
     form : '#frm-shipping',  
 
     borderColorOnError:"#FF0000", 
 
     onError : function() { 
 
      console.log('error') 
 
     },  
 
     onSuccess : function() { 
 
      console.log('te3st') 
 
      var params = $("#frm-shipping").serialize(); 
 
      // AJAX call here 
 

 
     } 
 
    }); 
 
}
<script src="https://code.jquery.com/jquery-3.1.0.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> 
 

 

 

 
<form id="frm-shipping" class="frm-shipping" method="post"> 
 

 
    
 
    <input type="text" name="contact_phone" class="has_validation" 
 
    placeholder="Contact phone" value="" data-validation="required" 
 
    data-validation-error-msg="this field is mandatory!" > 
 

 
    <input type="text" name="first_name" class="has_validation" 
 
    placeholder="First Name" value="" data-validation="required" 
 
    data-validation-error-msg="this field is mandatory!" > 
 

 
    
 
    
 
</form> 
 

 
<button class="btn" form='frm-shipping' onclick="nextStep();">Next</button>

1

この

$('.btn').click(function(){ 
     Validate method 
    }); 
関連する問題