0

我正在对来自javascript-coder的输入框使用 javascript 验证,它在我的非 ajax 页面上运行良好,但是当我使用 ajax 发布输入时,即使验证失败,脚本也会运行而不会停止。我从这里尝试了一个示例,但是当我尝试该建议时,验证根本不起作用。在我的 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 回答