我正在使用jquery验证1.9.0。我使用了最新的Jquery并返回1.6.0。结果没有变化
我的问题是:当我故意输入错误的值(没有足够的字符等)时,验证脚本会正确地显示错误,但仍允许提交脚本。 我尝试过验证方法,包括添加规则,规则和下面非常简单的表单类型。
<script>
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
</script>
<script>
$(function() {
$("#comm").validate();
});
</script>
表格
<form action="comm.php" method="post" name="comm" id="comm">
Name: <input type="text" name="name" id="name" minlength="3" class="required" />
Email:<input type="email" name="email" id="email" class="required email" /> <br />
<label for="comment"> Comment </label> <br />
<textarea name="comment" id="comment" cols="80" rows="5" minlength="6" class="required" /></textarea>
<?php
date_default_timezone_set('America/New_York');
$date = date("Y-n-j h:i:s");?>
<input type="hidden" name="date" id="date" value="<?php echo $date; ?>" />
<?php $post_id = $id;?>
<input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>" />
<?php $ip = $_SERVER["REMOTE_ADDR"]; ?>
<input type="hidden" name="ip" id="ip" value="<?php echo $ip; ?>" />
<input type="submit" value="Post" name="post" id="post" /> <input type="reset" value="Reset Form" name="reset" id="reset" />
</form>
非常简单的东西。
提交在网络上的所有表单上发生,并且所有表单都在localhost上发生。我总能发现错误,但永远不会阻止它们。我做错了什么?
Firebug显示我正确提交并且没有脚本错误。所有jquerys都连接在一起。 Firebug还在html表单中提交 novalidate =“novalidate”后向我显示。使用onsubmit = return false不会改变任何内容
我使用ajax提交表单,完美无缺地工作
$(function() {
$("#comm").submit(function() {
var data = $('#comm').serialize();
alert (data); return false;
$.ajax({
url: "comm.php",
data: data,
type: "POST",
success: function(msg){
if(msg){
$('.comme').prepend().html(msg).show();
}else{
$('.comme').text("nothing came back");
}
}
});
return false;
});
});
谢谢
答案 0 :(得分:3)
单击“提交”按钮后尝试进行Ajax处理,而不是使用jQuery表单提交,或许只是通过Ajax提交表单数据。
$(function() {
$("#post").click(function() {
var data = $('#comm').serialize();
// TODO: validate your data - $("#comm").validate();
// TODO: submit your form though ajax
// Other operations on form data
return false;
});
});
注意:如果通过页面重定向进行表单提交,请尝试使用&#39; onsubmit = return false;&#39;。
<强>更新强>
我似乎已经从验证功能的提交回调处理程序( submitHandler )提交了FORM,以避免提交后的重定向。请尝试检查this演示示例,该示例适用于Ajax表单提交,查看此示例页面的源代码,然后相应地调整代码。
var v = jQuery("#form").validate({
submitHandler: function(form) {
jQuery(form).ajaxSubmit({
target: "#result"
});
}
});
答案 1 :(得分:1)
如果您在提交表单时使用jigery接收表单,那么您应该指定包含jquery代码的php文件作为表单的操作,而不是“监听”提交事件。另一个选择是让'action'参数为空。这里的要点是您要发送两次表单:当您单击峰值时,表单会自动发送到'action'参数中指定的文件(即正在进行的提交,因为它没有验证) ;并且,在您单击“提交”的同时,它还会触发ajax请求,该请求将执行验证,如果成功,则再次执行提交。