dongyan5641 2016-07-15 12:37
浏览 63

jquery id在表单验证中导致错误

I was trying to make the Contact Form work but when i remove the id="contactform" the Validation Doesn't work but i get success msg and when i remove the id="contactform" the validation doesn't work.so here is my code the php code is working fine but there is some problem in jquery

// Contact form
$(function() {
    // validate contact form on keyup and submit
    $("#contactForm").validate({
        rules: {
            name: {
                required: true,
                minlength: 2,
                lettersonly: true
            },
            email: {
                required: true,
                minlength: 6,
                email: true
            },
            phone: {
                required: true,
                digits: true,
                minlength: 10,
                maxlength: 15
            },
            message: {
                required: true,
                minlength: 6
            }
        },
        messages: {
            name: {
                required: "Please enter your name",
                minlength: "Minimum 2 characters",
                lettersonly: "Only letters please!"
            },
            email: {
                required: "Please enter your email address",
                minlength: "Minimum 6 characters",
                email: "That's an invalid email"
            },
            phone: {
                required: "Please enter your phone number",
                digits: "Only digits (no spaces)",
                minlength: "Minimum 10 characters",
                maxlength: "Maximum 15 characters"
            },
            message: {
                required: "Please enter your message",
                minlength: "Minimum 6 characters"
            }
        },
        success: function(label) {
            label.addClass("valid").text("Perfect!");
        },
        submitHandler: function(element) {

            var ajaxform = $(element),
                url = ajaxform.attr('action'),
                type = ajaxform.attr('method'),
                data = {};

            $(ajaxform).find('[name="submit"]').html('<i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Sending...');


            ajaxform.find('[name]').each(function(index, value) {
                var field = $(this),
                    name = field.attr('name'),
                    value = field.val();

                data[name] = value;

            });

            $.ajax({
                url: url,
                type: type,
                data: data,
                success: function(response) {
                    if (response.type == 'success') {
                        $("#contactForm").before("<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>" + response.text + "</div>");
                        $(ajaxform).each(function() {
                            this.reset();
                            $(this).find('[name="submit"]').html('<i class="fa fa-paper-plane fa-fw"></i> Send');
                        }).find('.valid').each(function() {
                            $(this).remove('label.valid');
                        })
                    } else if (response.type == 'error') {
                        $("#contactForm").before("<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>" + response.text + "</div>");
                        $(ajaxform).find('[name="submit"]').html('<i class="fa fa-paper-plane fa-fw"></i> Send');
                    }
                }
            });

            return false;
        }
    });

});


**and my HTML Code is:**

    <!--- Contact Section-->
    <!-- Contact section -->
    <
    section id = "contact"
class = "contact content-section no-bottom-pad wow fadeIn"
data - wow - offset = "10" >
    <
    div class = "container" >
    <
    div class = "row text-center" >
    <
    div class = "col-md-12" >
    <
    h2 > Contact < /h2> <
    h3 class = "caption gray" > Feel free to get in touch with us
if you have a new project or simply something awesome < /h3> <
    /div><!-- /.col - md - 12 -->

    <
    /div><!-- /.row-- >
    <
    /div><!-- /.container-- >

    <
    div class = "container" >
    <
    div class = "row form-container" >

    <
    div class = "col-md-8 contact-form" >
    <
    h3 > Drop us a line < /h3> <
    form class = "ajax-form"
id = "contactForm"
method = "post"
action = "assets/php/contact.php" >
    <
    div class = "form-group" >
    <
    input type = "text"
class = "form-control"
id = "name"
name = "name"
placeholder = "Your Name..."
value = ""
required >
    <
    /div> <
    div class = "form-group" >
    <
    input type = "email"
class = "form-control"
id = "email"
name = "email"
placeholder = "Your email..."
value = ""
required >
    <
    /div> <
    div class = "form-group" >
    <
    input type = "phone"
class = "form-control"
id = "phone"
name = "phone"
placeholder = "Your phone..."
value = ""
required >
    <
    /div> <
    div class = "form-group" >
    <
    textarea class = "form-control"
rows = "4"
name = "message"
placeholder = "Your message..."
required > < /textarea> <
    /div> <
    div class = "form-group" >
    <
    button type = "submit"
name = "submit"
class = "btn btn-default" > < i class = "fa fa-paper-plane fa-fw" > < /i> Send</button >
    <
    /div> <
    /form> <
    /div><!-- /.contact - form-- >

And my PHP code is :

  <?php
      header('Content-type: application/json');

if ($_POST) {
    $to_email = "you@yourdomain.com"; //Recipient email, Replace with own email here

    //check if its an ajax request, exit if not
    if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {

        $output = json_encode(array( //create JSON data
            'type' => 'error',
            'text' => 'Sorry Request must be Ajax POST'
        ));
        die($output); //exit script outputting json data
    }

    //Sanitize input data using PHP filter_var().
    $user_name    = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
    $user_email   = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
    $phone_number = filter_var($_POST["phone"], FILTER_SANITIZE_NUMBER_INT);
    $message      = filter_var($_POST["message"], FILTER_SANITIZE_STRING);

    //additional php validation
    if (strlen($user_name) < 4) { // If length is less than 4 it will output JSON error.
        $output = json_encode(array(
            'type' => 'error',
            'text' => 'Name is too short or empty!'
        ));
        die($output);
    }

    if (!filter_var($user_email, FILTER_VALIDATE_EMAIL)) { //email validation
        $output = json_encode(array(
            'type' => 'error',
            'text' => 'Please enter a valid email!'
        ));
        die($output);
    }


    if (!filter_var($phone_number, FILTER_SANITIZE_NUMBER_FLOAT)) { //check for valid numbers in phone number field
        $output = json_encode(array(
            'type' => 'error',
            'text' => 'Enter only digits in phone number'
        ));
        die($output);
    }

    if (strlen($message) < 3) { //check emtpy message
        $output = json_encode(array(
            'type' => 'error',
            'text' => 'Too short message! Please enter something.'
        ));
        die($output);
    }

    //email subject
    $subject = 'New mail via contact form';

    //email body
    $message_body = $message . "

-" . $user_name . "

Email : " . $user_email . "
Phone Number : " . $phone_number;

    //proceed with PHP email.
    $headers = 'From: ' . $user_name . '<' . $user_email . '>' . "
" . 'Reply-To: ' . $user_name . '<' . $user_email . '>' . "
" . 'X-Mailer: PHP/' . phpversion();

    $send_mail = mail($to_email, $subject, $message_body, $headers);

    if (!$send_mail) {
        //If mail couldn't be sent output error. Check your PHP email configuration (if it ever happens)
        $output = json_encode(array(
            'type' => 'error',
            'text' => 'Could not send mail! Please check your PHP mail configuration.'
        ));
        die($output);
    } else {
        $output = json_encode(array(
            'type' => 'success',
            'text' => 'Hi ' . $user_name . ', thank you for your email, we will get back to you shortly.'
        ));
        die($output);
    }
}


?>
  • 写回答

1条回答 默认 最新

  • dtstnjl898781429 2016-07-15 13:28
    关注

    You can use following approach to validate a form:

    $(function(){
       $('form').validate({
             'rules': {
             },
             'messages': {
             }
       })
    })
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器