2012-04-22 16 views
0

私の入力ボックスにはjavascript-coderからjavascript検証を使用していますが、非Ajaxページで正常に動作しますが、POST入力にajaxを使用すると、 。私はhereの例を試しましたが、提案を試したところ、検証はまったく機能しませんでした。私のAjaxのスクリプトで、私は単純にデータを投稿する前にこれを中置くことによって、jqueryの検証で動作するようにすべてを取得することができます検証が失敗した後もスクリプトは停止しません

var frm = $(this).closest('form');   
     if($(frm).valid()){ 

をしかし、私は本当にこの検証ライブラリに固執したいので、私はコミュニティの誰かより身近JavaScriptを期待しています私のAjaxスクリプトを先に動かす前に、検証が失敗したかどうかをテストするためのすべてのドキュメントで何かを見つけることができなかったので、この検証ライブラリでも同等のものを見つけることができます。

マイ形式:

<form method="post" name="send_message_frm" id="send_message_frm"> 
     <div style="margin-top:20px;"></div> 
     <fieldset> 
      <div class="clear"></div> 
      <div style="margin-top:20px;"></div> 
      <label>Product Group Name:</label> 
      <input name="desc" class="text-input medium3-input required" type="text" id="desc" value=""> 
      <div style="color:red;" id='send_message_frm_desc_errorloc' ></div> 
      <div style="margin-top:20px;"></div> 
     </fieldset> 
     <input name="user" class="text-input medium3-input" type="hidden" id="user" value="<?php echo $myid ; ?>"> 
     <div style="margin-top:20px;"></div> 
     <input type="submit" id="send-message" name="submit" value="Send" class='button' /> 
     <div style="margin-top:20px;"></div> 
     </form> 
<script type="text/javascript"> 


    var frmvalidator = new Validator("send_message_frm"); 
    frmvalidator.EnableOnPageErrorDisplay(); 
    frmvalidator.EnableMsgsTogether(); 
    frmvalidator.addValidation("desc","alnum","Only numbers and letters are allowed"); 
    frmvalidator.addValidation("desc","req","Please enter a description"); 


</script> 

私のAjaxのスクリプト:

<script type="text/javascript"> 

$(document).ready(function(){ 
    //Validate form....what can I put here to test if validation is completed properly???? 

    //onclick handler send message btn 
    $("#send-message").click(function(){ 
     $(this).closest('form').submit(function(){ 
      return false; 
     }); 
     var frm = $(this).closest('form');   

      $("#ajax-loading").show(); 
      var data = $(frm).serialize(); 
      $(frm).find('textarea,select,input').attr('disabled', 'disabled');    
      $.post( 
        "productgroup_add.php", 
        data, 
        function(data){ 
         $("#ajax-loading").hide(); 
         $(frm).find('textarea,select,input').removeAttr('disabled'); 
         $("#send_message_frm").prepend(data); 
        } 
      ); 
     } 
    ); 
    }); 
</script> 

答えて

1

検証スクリプトを確認した後、私はそれがフォームのOnSubmitのイベントハンドラに検証メソッドを添付していること(疑わとして)を発見し、右のように聞こえる...

this.formobj.onsubmit = form_submit_handler; 

しかし...それも

if(!document.forms[0].validatorobj.runAddnlValidations()) return; 
:Mオブジェクト:

this.formobj.validatorobj = this; 

あなたのフォームを検証するために呼び出すことができる方法があります:あなただけのような何かを行うことができますように

if (!this.runAddnlValidations()) 

の検証を実行するには、それが見えます

+0

チャームのように働いた!ありがとう! –

+0

大丈夫、私は銃を飛ばしました。私は何をしているのか分かりません。だから、if(!form_submit_handler())が返ります。私のAjax関数の前には、すべての機能が失敗する原因でした。私はいくつかのバリエーションを試してみましたが、(!form_submit_handler())を使用して、検証が成功したかどうかのブーリアン回答を得ましたが、スーパーが失われています。私はPHPで大丈夫ですが、javascriptには無知なので、イベントハンドラを自分で実行するという意味を広げることができますか?私はどこに何を置いていますか?私はそれが通過したかどうかを確認するために私の検証後に何かを配置する必要がありますか? –

+0

@DevNewb - 何が間違っているのかを知ることは難しいですが、とにかく別の方法で回答を更新しました。それがうまくいくことを望みます。 –

関連する問題