2015-09-21 11 views
7

Nie wiem, dlaczego Otrzymałem ten błąd, gdy zmieniłem kod na php (z html). gdy rozszerzenie pliku jest html, kod działa poprawnieNie można odczytać właściwości "ustawień" niezdefiniowanych po kliknięciu przycisku przesyłania

<?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?> 

wtedy to jest mój 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'); 
     } 
    }); 
}); 

Ten kod powoduje błąd po kliknięciu w przycisk (jQuery Weryfikuj Uncaught TypeError: Nie można odczytać właściwości 'settings' z undefined). Ale błąd jest tymczasowy i zniknie za jakiś czas.

Odpowiedz

16

Zdefiniowano dwa identyfikatory o tej samej nazwie, a identyfikator powinien być unikalny.

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

spróbować usunąć identyfikator z <div class="col-xs-6" id="signUpForm">

+1

co za głupi błąd, jak sprawdzić, czy istnieją 2 identyfikatory w tej samej formie? –

+1

za pomocą selektora 'id' jak np.' Console.log ($ ('[id = "signUpForm"]'). Length); ' –

+0

ok dzięki Norli..i zaakceptuje odpowiedź ur wkrótce, to jest wciąż trudne, jeśli potrzebujemy aby sprawdzić wszystkie identyfikatory jeden po drugim haha ​​ –

1

UWAGA dwie rzeczy

1. Zdefiniuj funkcję jQuery

obejmować funkcję jQuery!

(function($) { 

// skrypt startowy

// endscript/

})(jQuery); 
  1. zmienić formę Id ponieważ robi konflikt pomiędzy formą Identyfikatory i identyfikatory

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

i umieścić ten identyfikator w skrypcie

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

nadzieję, że zadanie będzie udany.

1

Aby dodać tutaj mały detal, natknąłem się na ten sam problem z selektorem czasu interfejsu użytkownika jQuery UI, a także dlatego, że identyfikator jest nieunikalny.

W moim przypadku jest to spowodowane pobieraniem elementu nadrzędnego z szablonu - duplikowanie go w wyskakującym oknie. W rezultacie zawartość tego okna miała identyczne duplikaty.

Mój normalny obejście, który miał zastąpić to:

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

z tym:

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

To działa całkiem dobrze dla większości rzeczy, ale nie dla próbnika czasu.Z tego jednego, I skończyłem ten sposób:

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

gdzie someUniqueTag jest identyfikator rekordu, liczbę losową lub inny odrębny ciąg. Rozwiązało to całkiem ładnie dla mnie.

Powiązane problemy