Не работает javascript при вызове с формы

Пытаюсь вызвать скрипт из формы, но не происходит вызов скрипта:

<!DOCTYPE html>
<html lang="en" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script>
        alert ("jjj")
        $("#friend-form").submit(function (e) {
                e.preventDefault();
                alert "jjj"
        })
      </script>

        <form id="friend-form">
            <input type="submit" class="btn btn-primary" value="fuck Friend" />
        </form>

    </body>
</html>


Ответы (3 шт):

Автор решения: Arturas Lapinskas

Вероятно, в момент инициализации дом элемента еще нет, Используйте .on("submit", function(), либо перенесите скрипт в конец страницы. Либо, еще старый добрый способ обернуть все в $(document).ready

→ Ссылка
Автор решения: Poul WWJD

Странноватое название кнопки.

По сути.

Вам уже ранее посоветовали перенести установку обработчика после появления элемента. Но кроме этого:

  • alert это функция, поэтому параметр передается по синтаксису в круглых кавычках;
  • лишний alert в скрипте нужно убрать;
  • после обработки события (если форму Вы отправлять не собираетесь), нужно вернуть значение из функции.

В итоге получится вот что.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>

  <body>
    <form id="friend-form">
      <input type="submit" class="btn btn-primary" value="f**k Friend" />
    </form>
    <script>
      $("#friend-form").submit(function(e) {
        alert ("jjj");
        e.preventDefault();
        return false;
      });
    </script>
  </body>
</html>

→ Ссылка
Автор решения: Igor

Строчка

alert "jjj"

синтаксически ошибочна. Вы хотели написать

alert("jjj");

Из-за этой синтаксической ошибки весь скрипт внутри тэга <script> игнорируется.

Ну и элемента формы еще не существует, когда на него навешивается обработчик события.

→ Ссылка