form action = "javascript: block ();"перенаправляет на javascript: block ();URL в Firefox - PullRequest
0 голосов
/ 29 июля 2010

У меня есть функция с именем block, которая просто возвращает false;

это предназначено для того, чтобы остановить отправку формы, чтобы функции ajax могли перехватить ее отправку, однако firefox, кажется, обрабатывает ее как фактический URL и загружает URL javascript: block ();

если у меня есть action = "javascript: return false;" тогда firefox даже не позволяет функциям ajax справиться с этим.

как я могу это исправить?

Ответы [ 5 ]

4 голосов
/ 29 июля 2010

Код Javascript не принадлежит атрибуту action.Вы можете использовать событие onsubmit.

<form onsubmit="return false;" .... >

обратите внимание, однако, что считается хорошим стилем указывать action, который будет работать, если у пользователя отключен JavaScript (постепенное ухудшение).Если вы не укажете свойство action, форма будет отправлена ​​на URL текущей страницы.

@ Джастин правильно отмечает, что наличие кода JavaScript в разметке HTML, строго говоря, всегда немного грязно.Хорошей практикой будет присвоение форме атрибута id и присвоение кода JavaScript этому элементу в части head.

С чистым Javascript:

document.onload = function() {
  document.getElementById("formid").onload = function() {  ..... }
}

С jQuery

$(document).ready(function() {
  $("#formid").load(function() { .... });
});
1 голос
/ 29 июля 2010
<form method="POST" action="Some url" onSubmit="doAjaxSubmit()">

</form>

Функция выглядит следующим образом

   function doAjaxSubmit() {
      // doe your custom  ajax here.
      // ...
      return false; // so that form does not submit
   }
1 голос
/ 29 июля 2010

положить вызов функции в onsubmit = "..."

0 голосов
/ 29 июля 2010

Надлежащим способом прикрепления событий является не через атрибуты HTML , а незаметно через сам JavaScript с использованием традиционной или расширенной модели.

Пример традиционной модели

var block = function() {
    ...
};

document.getElementById("my-form").onsubmit = block;
0 голосов
/ 29 июля 2010

Вам необходимо воспользоваться событием onsubmit элемента формы:

<form action="url_to_post_to" onsubmit="block();">
    <!-- your form here -->
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...