0

javascript-coderの入力ボックスに javascript 検証を使用していますが、ajax 以外のページでは問題なく動作しますが、ajax を使用して入力を POST すると、検証が失敗してもスクリプトは停止せずに実行されます。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>
4

1 に答える 1

1

検証スクリプトを確認した後、(疑わしいように)検証メソッドがフォームのOnSubmitイベントハンドラーにアタッチされていることを発見しました。

this.formobj.onsubmit = form_submit_handler;

しかし...それはフォームオブジェクトにもアタッチします:

this.formobj.validatorobj = this;

これには、フォームを検証するために呼び出すことができるメソッドがあります。

if (!this.runAddnlValidations())

検証を実行するには、次のようなことを実行できるようです。

if(!document.forms[0].validatorobj.runAddnlValidations()) return;
于 2012-04-22T04:09:34.740 に答える