我正在使用来自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>
答案 0 :(得分:1)
在查看验证脚本之后,我发现(如所怀疑的)它将验证方法附加到表单的OnSubmit事件处理程序,这听起来是正确的......
this.formobj.onsubmit = form_submit_handler;
但是......它还将自己附加到表单对象:
this.formobj.validatorobj = this;
有一个方法可以调用以验证表单:
if (!this.runAddnlValidations())
要运行验证,您似乎可以执行以下操作:
if(!document.forms[0].validatorobj.runAddnlValidations()) return;