Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot read property 'settings' of undefined when I click submit button

I don't know why I received this error when I changed the code to php (from html). when the extension of the file is html, the code is working fine.

<?php?>
<html lang="en">
<head>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
 
        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
 
        <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?>

then this is my jquery validation code

$(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');
       }
   });
}); 

This code causes error when I click the submit button (JQuery Validate Uncaught TypeError: Cannot read property 'settings' of undefined ) But the error is temporary and will vanish in a while.

like image 676
Robert Limanto Avatar asked Sep 21 '15 05:09

Robert Limanto


4 Answers

You defined two ids with same name, whereas id should be unique.

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

Try to remove id from <div class="col-xs-6" id="signUpForm">

like image 172
Norlihazmey Ghazali Avatar answered Sep 30 '22 05:09

Norlihazmey Ghazali


If you use the rules() method, make sure to initialize the validation first.

var validator = $("#Form1").validate(); $('#field1').rules("add", {          min: 1 }); 
like image 38
Michael Avatar answered Sep 30 '22 04:09

Michael


This error is normally caused by trying to validate an element that is not a form. In the OP's case, there are two elements with the same ID:

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

jQuery searches a page from top to bottom, and the first element it finds with this ID is not a form.

The Validator.element() function (for validating single elements) can also cause this error, if attempting to validate an element that is outside the form.

like image 31
user5493187 Avatar answered Sep 30 '22 06:09

user5493187


NOTE two things

1. Define the Jquery function

include the function of jQuery !

(function( $ ) {

//Start Script

//endscript/

})( jQuery );
  1. Change the Form Id because it's doing conflict between Form Id and Div Id

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

And put this id into script

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

Hope Your Task will be successful.

like image 36
CodeLove Avatar answered Sep 30 '22 04:09

CodeLove