我有一个模态的表单,用户必须填写表单(否则验证将显示所需的字段错误消息),然后单击提交输入类型,它什么都不做,然后再次单击它,然后它将通过ajax发布,并返回"谢谢"消息.
我查看了Stackoverflow并应用了我遇到的问题的答案,但我仍然无法让它工作.我确实删除了event.preventDefault(); 从中,以及$("#检讨形式").提交(函数(事件){和表单提交像它应该点击提交一次输入后,但它不会发布到数据库.
下面是#review-form的jQuery
$("#review-form").validate({ submitHandler: function () { $("#review-form").submit(function (event) { var rating = $(this).find('input[name=rating]'); // var rating = $(this).find('input[name=rating]').val(); var review = $(this).find('textarea[name=review]'); var form_settings = $(this).find('input[name=form_settings]'); var xid = $(this).find('input[name=XID]'); var entry_id = $(this).find('input[name=entry_id]'); var entry_type = $(this).find('input[name=entry_type]'); var site_id = $(this).find('input[name=site_id]'); var first_name = $(this).find('input[name=first_name]'); var middle_initial = $(this).find('input[name=middle_initial]'); $.ajax({ url: $("#review-form").attr("action"), //your server side script data: $(this).serialize(), type: 'POST', success: function (data) { //$('#response').append('
更新:我删除了$("#review-form").submit(function(event){}); 然后我改变了$(this).find ...并通过指定表单的#form-review的id来检索,然后通过data参数.我注释掉了所有单个变量,只是将$(this).serialize()传递给data参数,但是没有用.
下面的代码在Chrome和Firefox,但在Firefox,它关闭模式并重定向到站点的主页,它应该保持模式与您味精感谢开放的,像它在Chrome中的作用:
$("#review-form").validate({ submitHandler: function() { $.ajax({ url: $("#review-form").attr("action"), //your server side script data: $("#review-form").serialize(), type: 'POST', success: function (data) { $('#review-form').hide(); $('#review-form-response').html("Thank you, your review was submitted!
"); }, error: function (jxhr, msg, err) { $('#response').append('
最终工作产品:
$("#review-form").validate({ submitHandler: function() { $.ajax({ url: $("#review-form").attr("action"), data: $("#review-form").serialize(), type: 'POST', success: function (data) { $('#review-form').hide(); $('#review-form-response').html("Thank you, your review was submitted!
"); }, error: function (jxhr, msg, err) { $('#response').append('
charlietfl.. 8
您正在插件的回调中绑定一个新的submit
事件处理程序submitHandler
.此处理程序不会立即触发,因为提交事件已在进行中.
你不需要它.该submitHandler
回调将已经preventDefault
在内部范围内插件代码
删除它
$("#review-form").submit(function(event) { })
并保留其中包含的所有代码 submitHandler
由于您使用serialize()
的是数据....您不需要创建所有单独的字段变量