2015-03-29 3 views
1

Я занят для школы с AJAX, jQuery и HTML 5. Мне нужно создать чат, и все работает, кроме этой части публикации сообщений.Uncaught TypeError: undefined не является функцией - checkValidity

Это код формы:

<form id="chatForm"> 
     <div id="chatHead"> 
      <input type="text" name="chatName" id="userName" placeholder="Username" required="required" /> 
      <input type="button" value="Start" name="chatButton" id="chatButton" /> 
     </div> 

     <div id="chatBox"></div> 

     <div id="chatFoot"> 
      <input type="text" name="chatMessage" id="chatMessage" size="63" placeholder="Bericht" /> 
      <input type="submit" name="chatSend" id="chatSend" value="Send" disabled="disabled" /> 
     </div> 
    </form> 

Это функция для вставки пост:

function postChat() { 
    $(chatForm).submit(function() { 
     return false; 
    }); 

    if ($(chatForm)[0].checkValidity()) { 
     if (!this.checkValidity()) { 

     } 
     else { 
      var Naam = $(chatName).val(), 
       Bericht = $(chatMessage).val(); 

      $.get(phpScript, {action: "addMessage", name: Naam, message: Bericht}) 
       .done(function() { 
        postChat(); 
        startChat("system"); 
       }); 
      $(chatMessage).val(""); 
     } 
    }} 

Я всегда получаю эту ошибку: Uncaught TypeError: undefined is not a function

Он говорит, что это идет неверно в этой части кода:

if (!this.checkValidity()) { 

    } 

Я не знаю точно, что это значит, но это должно гарантировать, что система не будет публиковать сообщения.

Если кто-то также может объяснить мне, что это именно так, я буду очень изящным.

+0

Это означает, что функции не называется checkValidity. 'this', вероятно, относится к чему-то еще, чем то, что вы ожидаете. –

+0

есть в любом случае, чтобы узнать, к чему относится это значение? – StuiterSlurf

+0

console.log (это); а затем вы увидите его в браузерах F12 (нажмите клавишу f12). –

ответ

0

Что вы думаете о слове «это»?

if (!this.checkValidity()) { 

} 
  • Слово "это" относится к объекту, который имеет не checkValidity() функцию.
  • Ваш код выглядит не так, и имеет рекурсию (вы вызываете Ф.О. postChat() функции внутри себя)

Может быть, вам лучше переписать вам логику с этим скелетом:

Примечание: удалить отключен = «отключено» из кнопки отправки.

$(document).ready(function(){ 
    /* Run code only when DOM is ready (document loaded) */ 
    $('#chatForm').on('submit', function(e) { 
     /* Run code when user sumbits the form (pressing button or ENTER */. 
     e.preventDefault(); // <-- prevent form to be sended 

     /* 
      NOW HERE DO VALIDATION AND AJAX POSTS 
      As example I inserted part of your code. 
     */ 

     if ($('#chatForm')[0].checkValidity()) { 
      var Naam = $('#userName').val(), Bericht = $('#chatMessage').val(); 

      $.get(phpScript, {action: "addMessage", name: Naam, message: Bericht}) 
       .done(function() { 
        startChat("system"); 
      }); 

      $(chatMessage).val(""); 
     } else { 
      alert("Validation failed"); 
     } 
    }); 
}); 
+0

Нет, тогда ошибка была бы в том, что undefine не имеет свойства, называемого checkValidity, а в JS это всегда что-то –

+0

ну, я так и думал. Но одноклассник показал мне его код, и он работает на него. – StuiterSlurf

+0

Если я использую ваш код, и я пытаюсь отправить его в первый раз, он не отправляет сообщение, и я больше ничего не могу ввести в поле ввода. – StuiterSlurf

Смежные вопросы