我有一个名为block的函数,它只返回false;
这意味着停止提交表单,以便ajax函数可以捕获其提交,但是Firefox似乎将其视为实际URL并加载url javascript:block();
如果我有动作=“javascript:return false;”然后firefox甚至不让ajax函数处理它。
我该如何解决这个问题?
答案 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,但使用traditional或advanced模型通过JavaScript本身不引人注意。
传统模型的一个例子
var block = function() {
...
};
document.getElementById("my-form").onsubmit = block;