2016-09-12 7 views
0

私は単純なフォームを持っています私は、フォームが有効な状態にあるかどうかを知りたいと思います。validationEngine( 'validate')関数ではありません

このプロジェクトは、私はそれがフォームの状態に応じて、trueまたはfalseを返す関数validationEngine('validate')をサポートドキュメントによると、同じバージョン2.6.2

を使用していますjQuery Validation Engine

を使用しています。

エラーが続きますTypeError: $(...).validationEngine is not a function しかし、奇妙なことに、フォームが必要に応じて検証エラーを投げています。

私は、validationEngineプラグインがjqueryの後で、呼び出し元のjsファイルの前にロードされていることを確認しました。フォームセレクタも正しいです。

フォーム:検証を取り付け

<form name="editProfileForm" method="post" action="#" class="epf" id="editDiaryForm" style="display:none;"> 

     <a href="javascript:void(0)" onclick="toggleCancel(this,'addPlay');$('#editDiaryForm')[0].reset();;" class="pull-right action-link">Cancel</a> 
     <a href="javascript:void(0)" onclick="submitDiary('#editDiaryForm');" class="pull-right action-link">Save </a> 
     <input class="form-control validate[required, ajax[ajaxDiaryCall]]" name="title" id="title" type="text"/> 
     <textarea class="form-control validate[required]" name="playdiary" id="playdiary"></textarea> 

     <input type="hidden" name="Edit" value="playdiary" /> 
     </form> 

$(document).ready(function(){ 
     $("#editDiaryForm").validationEngine('attach'); 
     //This throws true 
     console.log($('#editDiaryForm').validationEngine('validate')); 
    }); 

送信機能

function submitDiary(formid) 
    { 
     $(formid).bind('submit' , function(e){ 
     e.preventDefault(); 
     // Gives me the expected value 
     console.log('Submiting Form - '+ formid); 
     //Throws me an error here if commited 
     $(formid).validationEngine(); 
     submit = false; 
     //Gets stuck here 
     if(submit == false && $(formid).validationEngine('validate') == true) 
     { 
      submit=true; 
      $.ajax({ 
      url: url+'diary/save', 
      async: false, 
      type: "post", 
      data: $(formid).serialize(), 
      success: function (data) { 
       if(data==true) 
       { 
       $('#diaries').prepend(data); 
       } 
       else 
       { 
       custom_page_msg('Something Went Wrong. Please Login to your account again to complete the action.'); 
       } 
       submit = false; 
      } 
      }); 
     } 

     }); 

     $(formid).submit(); 
} 

スクリプト注文

<script src="<?php echo base_url()?>js/jquery.min.js"></script> 
<!-- Include all compiled plugins (below), or include individual files as needed --> 
<script src="<?php echo base_url('js'); ?>/bootstrap.min.js"></script> 
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 

<script src="<?php echo base_url('js/languages'); ?>/jquery.validationEngine-en.js"></script> 
<script src="<?php echo base_url('js'); ?>/jquery.validationEngine.js"></script> 
<script src="<?php echo base_url('js'); ?>/jquery.customSelect.min.js"></script> 

<script src="<?php echo base_url('js'); ?>/scripts.js"></script> 
<script src="<?php echo base_url('js'); ?>/other-validation.js"></script> 
<script src="<?php echo base_url('js'); ?>/dropzone.js"></script> 
<script src="<?php echo base_url('js'); ?>/global.js"></script> 

この点については、どんな指導でも非常に役に立ちます。

更新

ITSは問題が別の場所だっ解決しました。私はJSの独自のバージョンをロードしていたファイルを見つけました。 submitDiary関数の開始時にちょうど単純なjQuery.noConflict();がトリックでした。もしあなたが何かのサイマルに遭遇すれば、それはそれかもしれない。

ありがとうございました。

答えて

0

[OK]問題は、jQueryが準備ができていないときに機能を呼び出そうとしていることです。最高のホエイが同期しています。ボタン上でクリックイベントをバインドし、クリックするだけですべてのデータを処理できます。

ベロー私は働いている簡単な例があります。

$(function(){ 
 
    $("#editDiaryForm").validationEngine('attach'); 
 
    console.log("Here is type of validationEngine: ", typeof $("#editDiaryForm").validationEngine); 
 
    
 
    $('#test').bind('click', function(e) { 
 
    e.preventDefault(); 
 
    $(this).parent('form').validationEngine('validate'); 
 
    }); 
 
});
<html> 
 
<head> 
 

 
</head> 
 
<body> 
 
    <form name="editProfileForm" method="post" action="#" class="epf" id="editDiaryForm"> 
 
     <a id="test" href="#" class="pull-right action-link">Save </a> 
 
     </form> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.2/jquery-1.8.2.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.2/languages/jquery.validationEngine-en.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.2/jquery.validationEngine.min.js"></script> 
 
</body> 
 
</html>

+0

@Genocide_Hoax私はこれがそうちょうどあなたが、私は私の提出機能を更新したリクエスト – LkPark

+0

を呼び出すホエーを変更する動作するはずのポストを編集しました。見てください。 –

+0

これはうまくいきません。あなたのonclickにどのように伝えたかは非同期に伝播します。いくつかのIDを設定してから、私の例のようにjQueryでクリックイベントをバインドしようとしたら、何が起こるかを教えてください – LkPark

関連する問題