返回false时表单仍然提交(不能看到错误)

时间:2014-05-20 15:08:14

标签: javascript html

我搜索了stackoverflow并找到了一些答案,但我尝试了一切。 也许这只是一个小错误或一些小错误,但我无法找到它们。

我也试过jsFiddle

<form class="search" onsubmit="return false;" method="get" action="index.html">
    <input class="text" type="text" onblur="if(this.value == ''){this.value = this.defaultValue;}" onfocus="if(this.value == this.defaultValue){this.value = '';}" onkeydown="if (event.keyCode == 13) { this.form.submit(); return false; }" value="Nachname" name="inputNachname" />
    <input class="text" type="text" onblur="if(this.value == ''){this.value = this.defaultValue;}" onfocus="if(this.value == this.defaultValue){this.value = '';}" onkeydown="if (event.keyCode == 13) { this.form.submit(); return false; }" value="Vorname" name="inputVorname" />
    <input type="hidden" value="search" name="query" />
    <button id="searchButton2" onmouseover="this.style.cursor = 'pointer';" onclick="form.submit();" value="Go" type="button">SUCHE</button>
</form>

我想要一个返回false的函数:

<form class="search" onsubmit="return go_search();" method="get" action="index.html">

这是功能:

function go_search(){
    alert('abort');
    return false;
}

jsFiddle

也许任何人都可以找到一些错误或找到更好的方法来做到这一点?

4 个答案:

答案 0 :(得分:2)

你的小提琴有两个问题。

  1. 您的JavaScript函数被包装在window.load处理程序中,将其置于错误的范围内。把它放在脑袋里就足够了。
  2. 您的按钮有类型按钮,不提交。您的按钮中的onclick="form.submit();"正在运行并提交表单,因为 it 正在触发提交,而不是触发表单的提交处理程序(onsubmit="return go_search();")。将按钮的类型从按钮更改为提交将解决该问题。
  3. <强> jsFiddle example

答案 1 :(得分:1)

您需要丢失onSubmit标记。只要归还它,FALSE就无法完全实现您的目标。看来你想调用一个可以返回&#34; false&#34;如果验证失败。这是处理它的好方法。

您需要将函数调用附加到提交按钮

onclick="go_search()"

在您的功能中,如果您愿意(在验证后),请提交表单。

function go_search(){
    alert('abort');
    if (youWantToSubmit==true) {
     form.submit();
     }
}

即使这样也不会100%工作,因为您的表单没有名称或ID。您需要添加这些,并使用更正确的调用,如:

document.getElementByID("[formID]").submit();

答案 2 :(得分:0)

你可以用jquery

来做到这一点
$("#searchButton2").click(function(e){
    e.preventDefault();
    alert('abort');
});

JSFIDDLE

答案 3 :(得分:-1)

使用jquery。

$(function(){
    $('form.search').submit(function(){
        return false;
    });
});

见这里:http://jsfiddle.net/U6UC3/