我使用bassistance.de的jQuery验证程序插件(1.11)并通过php提交。现在,我在javacript代码的末尾的提交处理程序中添加了一个ajax调用,但是该调用不起作用,firebug控制台也不存在。
案例1 如果我在网站的开头放置了ajax调用,它可以工作,但是不再可以看到验证器插件。
案例2 如果我将调用放入提交处理程序中,则该调用不存在,并且表单由php提交。
案例3 如果我将代码放在页面的末尾,则联系表仍由php提交。
这是ajax调用:
$("#contactform").submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "formfiles/submit.php",
data: $(this).serialize(),
success: function() {
$('#contactform').html("<div id='message'></div>");
$('#message').html("<h2>Your request is on the way!</h2>")
.append("<p>someone</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/ok.png' />");
});
}
});
return false;
});
有人知道怎么了吗?
预先感谢您提供的任何帮助,为此我全力以赴。
编辑 为了更好地理解问题,这里是完整的javascript
$(document).ready(function(){
$("#contactform").validate();
$(".chapta").rules("add", {maxlength: 0});
var validator = $("#contactform").validate({
ignore: ":hidden",
rules: {
name: {
required: true,
minlength: 3
},
cognome: {
required: true,
minlength: 3
},
subject: {
required: true,
},
message: {
required: true,
minlength: 10
}
},
submitHandler: function(form) {
$("#contactform").submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "formfiles/submit.php",
data: $(this).serialize(),
success: function() {
$('#contactform').html("<div id='message'></div>");
$('#message').html("<h2>Your request is on the way!</h2>")
.append("<p>someone</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/ok.png' />");
});
}
});
return false;
});
},
});
});
编辑2
选择器和所有其他似乎都很好。
<form action="#n" class="active" method="post" name="contactform" id="contactform">
您ajax
属于 内部 的submitHandler
jQuery的验证插件的回调函数。
根据文档,
SubmitHandler ,回调,默认值:默认(本机)表单提交
回调,用于在表单有效时处理实际的提交。获取表单作为唯一参数。替换默认的提交。 验证后通过Ajax提交表单的正确位置 。
另一个问题是您打了.validate()
两次电话。第一次调用后,另一个实例将被忽略,您尝试传递给它的所有规则也将被忽略。该.validate()
方法在DOM准备
初始化 表单上的插件时被调用一次。
最后,您不需要将submit
处理程序放入submitHandler
回调函数中。
演示: http :
//jsfiddle.net/nTNLD/1/
$(document).ready(function () {
$("#contactform").validate({
ignore: ":hidden",
rules: {
name: {
required: true,
minlength: 3
},
cognome: {
required: true,
minlength: 3
},
subject: {
required: true
},
message: {
required: true,
minlength: 10
}
},
submitHandler: function (form) {
$.ajax({
type: "POST",
url: "formfiles/submit.php",
data: $(form).serialize(),
success: function () {
$(form).html("<div id='message'></div>");
$('#message').html("<h2>Your request is on the way!</h2>")
.append("<p>someone</p>")
.hide()
.fadeIn(1500, function () {
$('#message').append("<img id='checkmark' src='images/ok.png' />");
});
}
});
return false; // required to block normal submit since you used ajax
}
});
});
问题内容: 我正在尝试通过AJAX提交表单,而不是使用常规的POST提交。HTML只是一个标准格式,我的jQuery代码如下: (基于此答案) 我从Submit函数返回false,但是表单仍在提交,我不知道为什么。没有收到任何Firebug错误。 问题答案: 如果html设置正确,则您的代码可以正常工作。这是我的测试html(使用php),因此您可以将其与自己的进行比较。
问题内容: 在我看来,我想使用ajax将表单提交给控制器。我有这个: 请求完成并成功完成后,我应该会在控制台中收到一条消息,并收到一个Toastr通知,但是我什么都没有收到,也没有收到任何控制台错误,但是我输入的记录已成功输入,因此,意味着该表单是通过常规MVC约定提交的。 如何使我的Ajax提交工作? 更新资料 在下面用Sparky进行评论后,我将代码更改为: 现在,如果表单为空..而我按下了创
本文向大家介绍jquery validate和jquery form 插件组合实现验证表单后AJAX提交,包括了jquery validate和jquery form 插件组合实现验证表单后AJAX提交的使用技巧和注意事项,需要的朋友参考一下 要实现表单验证和无刷新提交表单我们可以使用jQuery的两个很好用的插件——jquery validate.js 和 jquery form.js.具体详细
问题内容: JavaScript位: HTML位: 这就是我要使用的代码。我的想法是在使用Ajax发送表单之前,先验证所有输入。我现在已经尝试过许多版本,但是每次即使表单没有完全填写,最终还是要提交。我所有的输入都是“必需”类的。谁能看到我做错了吗? 另外,由于我的输入名称是用php生成的,因此我依赖于基于类的要求,因此我永远无法确定自己获得的名称或输入类型。 我在“页面”中显示/隐藏问题。 JS
问题内容: 我不确定我要去哪里。这个想法是在提交表单之前,输入字段之一通过ajax发送到服务器端验证器。如果响应为1,则输入有效且应提交表单。如果响应为0,则不应提交该表单。问题是我不知道如何在ajax请求函数中设置一个变量,以防止表单被提交。这就是我所拥有的: 问题答案: 问题在于请求是异步的,需要一段时间才能完成。因此,该函数会继续执行并在成功执行事件之前返回false。 为了解决这个问题,您
问题内容: 您好,我注意到,这个简单的代码无法正常工作…… 该测试已在localhost上运行,我的意思是:我加载页面,关闭本地Web服务器,然后触发请求(通过一个简单的按钮,其中onclick指向此功能)。错误永远不会被调用,我得到的是调用成功处理程序,它具有textStatus =“ success”和data = null。我什至注意到请求在10秒之前就超时了。在Firefox(最新版本),