Не удается прочитать настройки свойств undefined при нажатии кнопки отправки

Я не знаю, почему я получил эту ошибку, когда я изменил код на php (из html). когда расширение файла является html, код работает нормально

<?php?>
<html lang="en">
<head>
        <link rel="stylesheet" href="#" onclick="location.href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'; return false;">

        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="#" onclick="location.href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'; return false;">

        <link rel="stylesheet" href="css/manual.css">
        <!-- Optional theme -->

        <!-- Latest compiled and minified JavaScript -->
        <script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>


        <!-- Latest compiled and minified JavaScript -->
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.js"></script>

        <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"></script>
        <title>Register</title>
</head>

<body>

        <nav class="navbar navbar-default" id="navBar">

        </nav>

        <div class="full">
                <div class="col-xs-12">
                        <!--Side Bar-->
                        <div class="col-xs-3" id="navSide">
                        </div>

                        <div class="col-xs-6" id="signUpForm">

                                <h1>Register Page</h1>
                                <form role="form" id="signUpForm">
                                        <div class="form-group">
                                                <div class="form-inline spacer-12">
                                                        <input type="text" class="form-control"  name="userFirstname" placeholder="First Name">
                                                        <input type="text" class="form-control"  name="userLastName" placeholder="Last Name">

                                                </div> 
                                        </div>

                                        <div class="form-group ">      

                                                <input type="text" class="form-control"
                                                name="userEmail"
                                                placeholder="Email">
                                        </div>

                                        <div class="form-group ">
                                                <input type="password" class="form-control" name="userPassword" placeholder="Password">
                                        </div>

                                        <div class="form-group ">
                                                <input type="password" class="form-control" name="confirmPassword" placeholder="Password">
                                        </div>

                                        <div class="form-group ">
                                                  <label> Birthday* </label>
                                                  <input type="date" class="form-control" name="userBirthday" placeholder="Birthday">

                                        </div>
                                        <input type="submit" class="btn btn-info spacer-12" style="clear:both" >


                                </form>



                        </div>
                </div>
        </div>


        <script src="js/startup.js"></script>
        <script src="js/signup.js"></script>

</body>
</html>

<?php?>

то это мой код проверки jquery

$(document).ready(function(){
    $('#signUpForm').validate({
        errorElement: "span",
        errorClass: "help-block",
        rules:{
            userFirstName:{
                required: true
            },
            userLastName:{
                required: true
            },  
            userEmail:{
                required: true
            },
            userPassword:{
                required: true
            },
            confirmPassword:{
                required: true
            },
            userBirthday:{
                required: true
            }
       },
       submitHandler: function (form) { // for demo
           alert('valid form submitted'); // for demo
           return false; // for demo
       },
       highlight: function(element) {

        $(element).closest('.form-group').addClass('has-error').addClass('red-border');
       },
       unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error').addClass('has-success').removeClass('red-border');
       }
   });
}); 

Этот код вызывает ошибку, когда я нажимаю кнопку отправки (JQuery Validate Uncaught TypeError: Не удается прочитать настройки свойств undefined) Но ошибка временная и через некоторое время исчезнет.

Ответ 1

Вы определили два идентификатора с одинаковым именем, тогда как идентификатор должен быть уникальным.

<div class="col-xs-6" id="signUpForm">
<form role="form" id="signUpForm">

Попробуйте удалить идентификатор из <div class="col-xs-6" id="signUpForm">

Ответ 2

Хотя это не относится к вопросу OP, эта ошибка также может быть вызвана попыткой проверки элемента, который не является формой.

Ответ 3

ПРИМЕЧАНИЕ две вещи

1. Определите функцию JQuery

включить функцию jQuery!

(function( $ ) {

//Запустите Script

//endscript/

})( jQuery );
  1. Измените идентификатор формы, потому что он конфликтует с идентификатором формы и идентификатором Div

<form role="form" id="signUpForm1"> // include 1 in previous form id

И поместите этот id в Script

  $('#signUpForm1').validate({ // put the Id in the script

Надеемся, что ваша задача будет успешной.

Ответ 4

Чтобы добавить небольшую деталь здесь, я столкнулся с той же проблемой с jQuery UI time picker, и это также было связано с тем, что идентификатор не уникален.

В моем случае это потому, что я захватывал родительский элемент из шаблона - дублировал его для всплывающего окна. В результате содержимое окна имело дубликаты идентификаторов.

Моим обычным обходным решением для этого было заменить это:

$('#foo').bar();

с этим:

myPopupWindow.find('#foo').bar();

Это работает очень хорошо для большинства вещей, но не для выбора времени. Для этого я сделал это:

myPopupWindow.find('#foo').attr('id', 'foo_' + someUniqueTag);
myPopupWindow.find('#foo_' + someUniqueTag).timepicker();

где someUniqueTag является идентификатором записи, случайным числом или некоторой другой отдельной строкой. Это очень удобно для меня.

Ответ 5

Если вы используете метод rules(), сначала обязательно инициализируйте проверку.

var validator = $("#Form1").validate();
$('#field1').rules("add", {
         min: 1
});