通过ajax加载页面时的jQuery验证?

时间:2013-10-31 06:49:13

标签: javascript jquery ajax

我通过jQuery加载功能加载页面 我的问题是jQuery验证适用于第一页,但由于其他页面通过ajax加载,它不起作用。请找jsp& js文件如下。
    是因为使用ajax页面加载时页面源代码不会更改。     我应该使用显示/隐藏功能吗?
        //Main.jsp

              <script
                src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"
                type="text/javascript"></script>

            <script
                src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"
                type="text/javascript"></script>
            <script
                src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"
                type="text/javascript"></script>
            <link rel="stylesheet"
                href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />

            <link rel='stylesheet' type='text/css' href='css/styles.css' />
            <script type="text/javascript" src="js/main.js"></script>
            <script src="Jquery/myscript.js"></script>


            </head>
            <body>
                <div id="top">
                    <div id='mainMenu'>
                        <ul>
                            <li><a id="home"><span>Home</span></a></li>
                            <li><a href='#'><span>Hot Deals</span></a></li>
                            <li><a><span id="logPage">Login</span></a></li>
                            <li><a id="regPage"><span>Register</span></a></li>
                            <li><a id="usPage"><span>About</span></a></li>
                            <li class="last"><a id="adminPage"><span>Adminstration</span></a>
                        </ul>
                    </div>
                    <div id="mainPages">
                        <jsp:include page="Search.jsp"></jsp:include>
                    </div>
                    <div id="errors">
                        <s:actionerror />
                        <s:actionmessage />
                    </div>
                </div>

            </body>
            </html>
        //main.js

        $(document).ready(function() {

            $("#logPage").click(function() {

                $('#mainPages').empty();
                $('#mainPages').load('Index.jsp');
            });
            $("#regPage").click(function() {

                $('#mainPages').empty();
                $('#mainPages').load("Register.jsp");
            });
            $("#usPage").click(function() {

                $('#mainPages').empty();
                $('#mainPages').load("About.html");
            });
            $("#home").click(function() {

                $('#mainPages').empty();
                $('#mainPages').load("Search.jsp");
            });
            $("#adminPage").click(function() {

                $('#mainPages').empty();
                $('#mainPages').load("../AdminLogin.jsp");
            });

        });
    //myscript.js
    $(document).ready(function() {

        $("#myform").validate({
            rules : {
                email : {
                    required : true,
                    email : true
                },
                password : {
                    required : true,
                    minlength : 8
                },

            },
            messages : {
                email : {
                    required : "Please Enter email",
                    email : "Valid Email Please"
                }
            }
        });

        $("#regform").validate({

            rules : {
                email : {
                    required : true,
                    email : true
                },
                password : {
                    required : true,
                    minlength : 8
                },
                fname : {
                    required : true,
                    lettersonly : true
                },
                lname : {
                    lettersonly : true
                },
                mname : {
                    lettersonly : true
                },
                geneder : {
                    required : true
                },
                city : {
                    required : true
                },
                zip : {
                    required : true,
                    digits : true,
                    minlength : 6,
                    maxlength : 6
                },
                mobno : {
                    required : true,
                    digits : true,
                    minlength : 10,
                    maxlength : 10
                },
                dob : {
                    required : true
                }
            },
            messages : {
                email : {
                    required : "Please Enter email",
                    email : "Valid Email Please"
                }
            }

        });
        $("#travelDate").datepicker({
            defaultDate : '0',
            numberOfMonths : 1,
            minDate : '0',
            maxDate : '1M'
        });
        $("#searchForm").validate({

            rules : {
                fromCity : {
                    required : true,
                    lettersonly : true,

                },
                toCity : {
                    required : true,
                    lettersonly : true
                },
                seats : {
                    required : true,
                    digits : true,
                    min : 1,
                    max : 9,
                },
                travelDate : {
                    required : true,
                }
            },
            messages : {

            }
        });
    });
    )};

3 个答案:

答案 0 :(得分:0)

尝试

$(document.body).on('click', 'input[type="submit"]', function(){
   var $form = $(this).closest('form');
       $form.validate({

重复上述所有form

答案 1 :(得分:0)

你的main.js很好......

尝试以下步骤:

1)将$(document).ready(function()更改为方法,然后在function validator()中致电myscript.js

2)在您通过ajax调用加载的所有页面中使用onload=validator()

答案 2 :(得分:0)

动态加载的元素的存在需要由$("#someDynamicElement").live()而不是$(document).ready()来确定。如果这对你有所帮助,我在生成表单时遇到了类似的问题..