首页 > 解决方案 > 如何将我的服务器端 PHP 代码添加到此表单向导?

问题描述

我开发了一个简单的 3 步表单向导进行注册。

所有客户端验证(JavaScript)都在工作。

问题是当用户到达最后一个阶段并单击提交时,它什么也不做。

我希望它直接指向我编写的 PHP 代码。

更新更新我的 html 代码后,当我单击下一个按钮时,它什么也不做

更新的 HTML 代码

<form action="register.php">
    <div id ="personal-form">
        <h4><b>Personal Details:</b></h4>
        <hr>
        <div class="form-group">
            <label class="sr-only" for="first-name">First name</label>
            First Name
            <input type="text" name="firstname" placeholder="" class="form-control" id="firstname">
        </div>
        <div class="form-group">
            Last Name
            <label class="sr-only" for="last-name">Last name</label>
            <input type="text" name="lastname" placeholder="" class="form-control" id="lastname">
        </div>
        <div class="form-group">
            Phone Number
            <label class="sr-only" for="name">Phone Number</label>
            <input type="text" name="phone" placeholder="" class="form-control" id="phone">
        </div>
        <div class="form-group">
            <p class="has-error" id="error-msg"></p>
        </div>
        <div class="f1-buttons">
            <button type="button" id="first-next" class="btn btn-next">Next</button>
        </div>
</div>

    <div id="store-form">
    ........

    <button type="button" class="btn btn-previous" id="first- 
    previous">Previous</button>
    <button type="button" class="btn btn-next" 
    id="second-next">Next</button></center>                 
    </div>

    <div id="account-form">

    ........

    <button type="button" class="btn btn-previous" id="second- 
    previous">Previous</button>
    <button type="submit" class="btn btn-next" id="submit">Submit</button> 
    </center>
    </div>

   </form>

JavaScript 代码

function init() {
    //hide the other two forms
    $("#store-form").hide();
    $("#account-form").hide();

    //$("#first-next").addClass("disabled");

    //var state2 = $("#state").val();

    /*$("#state").change(function ()
    {
        var state2 = $("#state").val();
        alert(state2);
    })*/

    //alert(state2);

    $.validator.setDefaults({
        errorClass: 'help-block',
        highlight: function (element) {
            $(element).closest('.form-group').addClass('has-error');
        },
        unhighlight: function (element) {
            $(element).closest('.form-group').removeClass('has-error');
        }
    })

    $.validator.addMethod('strongPassword', function (value, element) {
        return this.optional(element) || value.length >= 6
        // && /\d/.test(value) && /[a-z]/i.test(value);
    }, 'Your password must be at least 6 characters long');//'Your password must be at least 6 characters long, contain at least on e number and a character');

    //The method for all select options
    $.validator.addMethod('checkSelect', function (value, element) {
        return this.optional(element) || (value != "Please choose...")
        // && /\d/.test(value) && /[a-z]/i.test(value);
    }, 'You must select an option');//'Your password must be at least 6 characters long, contain at least on e number and a character');

    $("#personal-form").validate({
        rules: {
            firstname: {
                required: true,
                nowhitespace: true,
                lettersonly: true
            },
            lastname: {
                required: true,
                nowhitespace: true,
                lettersonly: true
            },
            phone: {
                required: true,
            }
        },
        messages: {
            firstname: {
                required: 'Please enter your first name',
                nowhitespace: 'Please enter a valid first name',
                lettersonly: 'Please enter only alphabets'
            },
            lastname: {
                required: 'Please enter your first name',
                nowhitespace: 'Please enter a valid last name',
                lettersonly: 'Please enter only alphabets'
            },
            phone: {
                required: "Please enter a valid phone no"
            }
        }
    });

    /*if($("#personal-form").valid() == true)
    {
        $("#first-next").removeClass("disabled");
        alert($("#personal-form").valid());
    }*/

    if ($("#first-next").click(function () {
        if ($("#personal-form").valid() == true) {
        //$("#first-next").removeClass("disabled");
        //alert($("#personal-form").valid());

            $("#personal-form").hide();
            $("#store-form").fadeIn();
            $("#account-form").hide();

        //$("#error-msg").html("");
    }
    else {
        //$("#error-msg").html("Please correct all errors before clicking next");
    }
    }));

    /*$("#firstname").on('change', function() {
        if($("#firstname").valid() == true)
        {
            console.log("test");
            alert("It worked");
        }
    });*/

    //$('#firstname').on('input', function()
    //{
    //var firstname = $("#firstname").val();
    //alert(firstname);
    //alert("hello");
    //console.log("test");
    //alert("You just typed something in the firstname field");
    //});

    $("#store-form").validate({
        rules: {
            storename: {
                required: true
            },
            state: {
                required: true,
                checkSelect: true
            },
            lga: {
                required: true,
                checkSelect: true
            },
            address: {
                required: true,
            },
            category: {
                required: true,
                checkSelect: true
            },
            description: {
                required: true,
                lettersonly: true
            }
        },
        messages: {
            storename: {
                required: "Please enter the name of your store"
            },
            address: {
                required: "Please enter the address of your store"
            },
            description: {
                required: "Briefly descibe what you sell or do"
            }
        }
    });

    if ($("#second-next").click(function () {
        if ($("#store-form").valid() == true) {
        //$("#first-next").removeClass("disabled");
        //alert($("#personal-form").valid());

            $("#personal-form").hide();
            $("#store-form").hide();
            $("#account-form").fadeIn();

        //$("#error-msg").html("");
    }
    else {
        //$("#error-msg").html("Please correct all errors before clicking next");
    }
    }));

    if ($("#first-previous").click(function () {
        $("#personal-form").fadeIn();
        $("#store-form").hide();
        $("#account-form").hide();

        //$("#error-msg").html("");
    }));

    $("#account-form").validate({
        rules: {
            email: {
                required: true,
                email: true
            },
            password: {
                required: true,
                strongPassword: true
            },
            password2: {
                required: true,
                equalTo: "#password"
            }
        },
        messages: {
            email: {
                required: 'Please enter your email address',
                email: "Please enter a valid email address"
            },
            password: {
                required: 'Please enter your password',
                strongPassword: "Your password is not strong enough"
            },
            password2: {
                required: 'Please enter your password',
                equalTo: "Both passwords don't match"
            }
        }
    });

    $("#email").on('input', function () {
        if ($("#email").valid() == true) {
            //console.log("test");
            //alert("It worked");

            var email = $("#email").val();

            $("#check-email-server").load('php/check_email.php', { "email": email });
        }
    });

    $("#email").on('focusout', function () {
        if ($("#email").valid() == true) {
            //console.log("test");
            //alert("It worked");

            var email = $("#email").val();

            $("#check-email-server").load('php/check_email.php', { "email": email });
        }
    });

    if ($("#second-previous").click(function () {
        $("#personal-form").hide();
        $("#store-form").fadeIn();
        $("#account-form").hide();

        //$("#error-msg").html("");
    }));
}

这三种形式都应该连接到 1 个 PHP 文件。

问题是当我单击提交时它什么也不做。

如何将三种不同的表单连接在一起并使提交按钮起作用?

第一种形式

第二种形式

第三种形式

标签: javascriptphp

解决方案


最后一个按钮应该是“提交”类型,<button type="submit">否则普通的“按钮”不会提交表单(或者您可能必须编写一个 js 点击事件来提交表单。)

您必须将所有输入放在相同的表单中以将它们发送到 php,考虑用 div 替换表单并将它们包装在一个唯一的表单中。如果您使用 3 种不同的表单,则只有最后一个表单的输入元素将被发送到后端,但我认为您需要所有输入。

这是一个例子:http: //jsfiddle.net/2sdtjydu/1/

<form action="" method="post">
    <div id ="personal-form">
        <h4><b>Personal Details:</b></h4>
        <hr>
        <div class="form-group">
            <label class="sr-only" for="first-name">First name</label>
            First Name
            <input type="text" name="firstname" placeholder="" class="form-control" id="firstname">
        </div>
        <div class="form-group">
            Last Name
            <label class="sr-only" for="last-name">Last name</label>
            <input type="text" name="lastname" placeholder="" class="form-control" id="lastname">
        </div>
        <div class="form-group">
            Phone Number
            <label class="sr-only" for="name">Phone Number</label>
            <input type="text" name="phone" placeholder="" class="form-control" id="phone">
        </div>
        <div class="form-group">
            <p class="has-error" id="error-msg"></p>
        </div>
        <div class="f1-buttons">
            <button type="button" id="first-next" class="btn btn-next">Next</button>
        </div>
</div>

    <div id="store-form">
    ........

    <button type="button" class="btn btn-previous" id="first- 
    previous">Previous</button>
    <button type="button" class="btn btn-next" 
    id="second-next">Next</button>           
    </div>

    <div id="account-form">

    ........

    <button type="button" class="btn btn-previous" id="second- 
    previous">Previous</button>
    <button type="submit" class="btn btn-next" id="submit">Submit</button> 
    </div>

   </form>

这是jQuery:

$(document).ready(function () {
  //hide the other two forms
    $("#store-form").hide();
    $("#account-form").hide();

    //$("#first-next").addClass("disabled");

    //var state2 = $("#state").val();

    /*$("#state").change(function ()
    {
        var state2 = $("#state").val();
        alert(state2);
    })*/

    //alert(state2);

    $.validator.setDefaults({
        errorClass: 'help-block',
        highlight: function (element) {
            $(element).closest('.form-group').addClass('has-error');
        },
        unhighlight: function (element) {
            $(element).closest('.form-group').removeClass('has-error');
        }
    })

    $.validator.addMethod('strongPassword', function (value, element) {
        return this.optional(element) || value.length >= 6
        // && /\d/.test(value) && /[a-z]/i.test(value);
    }, 'Your password must be at least 6 characters long');//'Your password must be at least 6 characters long, contain at least on e number and a character');

    //The method for all select options
    $.validator.addMethod('checkSelect', function (value, element) {
        return this.optional(element) || (value != "Please choose...")
        // && /\d/.test(value) && /[a-z]/i.test(value);
    }, 'You must select an option');//'Your password must be at least 6 characters long, contain at least on e number and a character');
$("form").validate({
        rules: {
            firstname: {
                required: true,
                nowhitespace: true,
                lettersonly: true
            },
            lastname: {
                required: true,
                nowhitespace: true,
                lettersonly: true
            },
            phone: {
                required: true,
            },
                    storename: {
                required: true
            },
            state: {
                required: true,
                checkSelect: true
            },
            lga: {
                required: true,
                checkSelect: true
            },
            address: {
                required: true,
            },
            category: {
                required: true,
                checkSelect: true
            },
            description: {
                required: true,
                lettersonly: true
            },
                        email: {
                required: true,
                email: true
            },
            password: {
                required: true,
                strongPassword: true
            },
            password2: {
                required: true,
                equalTo: "#password"
            }
        },
        messages: {
            firstname: {
                required: 'Please enter your first name',
                nowhitespace: 'Please enter a valid first name',
                lettersonly: 'Please enter only alphabets'
            },
            lastname: {
                required: 'Please enter your first name',
                nowhitespace: 'Please enter a valid last name',
                lettersonly: 'Please enter only alphabets'
            },
            phone: {
                required: "Please enter a valid phone no"
            },
            storename: {
                required: "Please enter the name of your store"
            },
            address: {
                required: "Please enter the address of your store"
            },
            description: {
                required: "Briefly descibe what you sell or do"
            },
            email: {
                required: 'Please enter your email address',
                email: "Please enter a valid email address"
            },
            password: {
                required: 'Please enter your password',
                strongPassword: "Your password is not strong enough"
            },
            password2: {
                required: 'Please enter your password',
                equalTo: "Both passwords don't match"
            }
        }
    });


    /*if($("#personal-form").valid() == true)
    {
        $("#first-next").removeClass("disabled");
        alert($("#personal-form").valid());
    }*/

    if ($("#first-next").click(function () {
        if ($("#personal-form :input").valid() == true) {
        //$("#first-next").removeClass("disabled");
        //alert($("#personal-form").valid());

            $("#personal-form").hide();
            $("#store-form").fadeIn();
            $("#account-form").hide();

        //$("#error-msg").html("");
    }
    else {
        //$("#error-msg").html("Please correct all errors before clicking next");
    }
    }));

    /*$("#firstname").on('change', function() {
        if($("#firstname").valid() == true)
        {
            console.log("test");
            alert("It worked");
        }
    });*/

    //$('#firstname').on('input', function()
    //{
    //var firstname = $("#firstname").val();
    //alert(firstname);
    //alert("hello");
    //console.log("test");
    //alert("You just typed something in the firstname field");
    //});


    if ($("#second-next").click(function () {
        if ($("#store-form :input").valid() == true) {
        //$("#first-next").removeClass("disabled");
        //alert($("#personal-form").valid());

            $("#personal-form").hide();
            $("#store-form").hide();
            $("#account-form").fadeIn();

        //$("#error-msg").html("");
    }
    else {
        //$("#error-msg").html("Please correct all errors before clicking next");
    }
    }));

    if ($("#first-previous").click(function () {
        $("#personal-form").fadeIn();
        $("#store-form").hide();
        $("#account-form").hide();

        //$("#error-msg").html("");
    }));

    $("#email").on('input', function () {
        if ($("#email").valid() == true) {
            //console.log("test");
            //alert("It worked");

            var email = $("#email").val();

            $("#check-email-server").load('php/check_email.php', { "email": email });
        }
    });

    $("#email").on('focusout', function () {
        if ($("#email").valid() == true) {
            //console.log("test");
            //alert("It worked");

            var email = $("#email").val();

            $("#check-email-server").load('php/check_email.php', { "email": email });
        }
    });

    if ($("#second-previous").click(function () {
        $("#personal-form").hide();
        $("#store-form").fadeIn();
        $("#account-form").hide();

        //$("#error-msg").html("");
    }));
});

推荐阅读