Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发送ajax请求前的jQuery验证_Jquery_Jquery Validate - Fatal编程技术网

发送ajax请求前的jQuery验证

发送ajax请求前的jQuery验证,jquery,jquery-validate,Jquery,Jquery Validate,我有一个表单,允许用户编辑SMTP信息。所有必填字段都有class=“required”。表单有两个按钮 拯救 试验 1)保存 当用户单击save按钮时,jQuery验证程序检查所有必填字段是否都有某些内容(class=“required”),然后以正常方式提交表单。这正如预期的那样有效 2)测试 当用户单击test按钮时,我使用$.getJSON来确定输入的信息是否有效。但是,在发送ajax请求之前,没有进行任何验证。我希望此按钮需要相同的字段 我如何才能做到这一点? 问题似乎是,按照我的设置

我有一个表单,允许用户编辑SMTP信息。所有必填字段都有class=“required”。表单有两个按钮

  • 拯救
  • 试验
  • 1)保存

    当用户单击save按钮时,jQuery验证程序检查所有必填字段是否都有某些内容(class=“required”),然后以正常方式提交表单。这正如预期的那样有效

    2)测试

    当用户单击test按钮时,我使用$.getJSON来确定输入的信息是否有效。但是,在发送ajax请求之前,没有进行任何验证。我希望此按钮需要相同的字段

    我如何才能做到这一点?

    问题似乎是,按照我的设置方式,从来没有一个提交操作触发验证。解决方案是否使用jQuery验证程序submitHandler选项?如果是,如何确定单击了哪个按钮

    我的JS:

    $(document).ready(function(){
    
        $('#testEmailProfile').click(function() {
            var map = { 
                m: 'testEmailProfile', 
                smtpHostname: $('#smtpHostname').val(),
                smtpPort: $('#smtpPort').val(),
                smtpUsername: $('#smtpUsername').val(),
                smtpPassword: $('#smtpPassword').val(),
            }
            $.getJSON('ajax.php', map, function(data) {
                if (data.success) {
                    //Works
                } else {
                    //Doesn't work
                }
            });
            return false;
        });
    
        $("#emailProfileForm").validate();
    
    });
    
    $(“#emailProfileForm”).validate()的位置;这是错误的。在发送ajax请求之前,应该调用验证函数

    $(document).ready(function(){
    
        $('#testEmailProfile').click(function() {
            if($("#emailProfileForm").validate()) {
                var map = { 
                    m: 'testEmailProfile', 
                    smtpHostname: $('#smtpHostname').val(),
                    smtpPort: $('#smtpPort').val(),
                    smtpUsername: $('#smtpUsername').val(),
                    smtpPassword: $('#smtpPassword').val(),
                }
                $.getJSON('ajax.php', map, function(data) {
                    if (data.success) {
                        //Works
                    } else {
                        //Doesn't work
                    }
                });
            } else {
                return false;
            }
        });
    
    });
    

    如果您使用的是jquery form validator pludgin,请阅读更多信息。

    我将表单拆分为两个单独的表单,然后执行以下操作:

    $("#emailProfileForm").validate();
    
    $("#testEmailProfileForm").validate({
        submitHandler: function() {
            var map = { 
                m: 'testEmailProfile', 
                smtpHostname: $('#smtpHostname').val(),
                smtpPort: $('#smtpPort').val(),
                smtpUsername: $('#smtpUsername').val(),
                smtpPassword: $('#smtpPassword').val(),
            }
            $.getJSON('ajax.php', map, function(data) {
                if (data.success) {
                    //Success
                } else {
                    //Not success
                }
            });
        }
    });
    

    可能不是最佳解决方案…

    Jquery验证程序为此提供提交处理程序

    $(".selector").validate({
    
       submitHandler: function(form) {
    
          $(form).ajaxSubmit();
       }
     });
    
    因此,您可以在submitHandler函数中包含所有代码。这将在验证结果成功后执行