form action =“javascript:block();”重定向到javascript:block();在Firefox中的网址

时间:2010-07-29 17:24:48

标签: jquery ajax forms

我有一个名为block的函数,它只返回false;

这意味着停止提交表单,以便ajax函数可以捕获其提交,但是Firefox似乎将其视为实际URL并加载url javascript:block();

如果我有动作=“javascript:return false;”然后firefox甚至不让ajax函数处理它。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:4)

Javascript代码不属于action属性。您可以使用onsubmit事件。

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

但请注意,如果用户关闭了JavaScript(优雅降级),则指定action会很有用。如果您未指定action属性,则表单将提交到当前页面URL。

@Justin正确地指出,在HTML标记中使用JavaScript代码严格来说总是有点脏。好的做法是为表单提供id属性,并将JavaScript代码分配给head部分中的该元素。

使用纯Javascript:

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

使用jQuery

$(document).ready(function() {
  $("#formid").load(function() { .... });
});

答案 1 :(得分:1)

将函数调用放在onsubmit =“...”

答案 2 :(得分:1)

<form method="POST" action="Some url" onSubmit="doAjaxSubmit()">

</form>

该功能如下所示

   function doAjaxSubmit() {
      // doe your custom  ajax here.
      // ...
      return false; // so that form does not submit
   }

答案 3 :(得分:0)

您需要利用表单元素的onsubmit事件:

<form action="url_to_post_to" onsubmit="block();">
    <!-- your form here -->
</form>

答案 4 :(得分:0)

附加事件的正确方法是not through HTML attributes,但使用traditionaladvanced模型通过JavaScript本身不引人注意。

传统模型的一个例子

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

document.getElementById("my-form").onsubmit = block;