jquery验证需要单击提交两次才能提交表单

 点提土八撇又254 发布于 2023-02-11 18:05

我有一个模态的表单,用户必须填写表单(否则验证将显示所需的字段错误消息),然后单击提交输入类型,它什么都不做,然后再次单击它,然后它将通过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('
  • ' + data + '
  • '); $('#review-form').hide(); $('#review-form-response').html("

    Thank you, your review was submitted!

    "); }, error: function (jxhr, msg, err) { $('#response').append('
  • ' + msg + '
  • '); } }); event.preventDefault(); }); } });

    更新:我删除了$("#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('
  • ' + msg + '
  • '); } }); event.preventDefault(); } });

    最终工作产品:

    $("#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('
  • ' + msg + '
  • '); } }); } });

    charlietfl.. 8

    您正在插件的回调中绑定一个新的submit事件处理程序submitHandler.此处理程序不会立即触发,因为提交事件已在进行中.

    你不需要它.该submitHandler回调将已经preventDefault在内部范围内插件代码

    删除它

    $("#review-form").submit(function(event) { })

    并保留其中包含的所有代码 submitHandler

    由于您使用serialize()的是数据....您不需要创建所有单独的字段变量

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有