验证失败后脚本不会停止

时间:2012-04-22 03:54:36

标签: javascript validation

我正在使用来自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>

1 个答案:

答案 0 :(得分:1)

在查看验证脚本之后,我发现(如所怀疑的)它将验证方法附加到表单的OnSubmit事件处理程序,这听起来是正确的......

this.formobj.onsubmit = form_submit_handler;

但是......它还将自己附加到表单对象:

this.formobj.validatorobj = this;

有一个方法可以调用以验证表单:

if (!this.runAddnlValidations())

要运行验证,您似乎可以执行以下操作:

if(!document.forms[0].validatorobj.runAddnlValidations()) return;