2014-05-20 94 views
0

我搜索了stackoverflow并找到一些答案,但我试了一切。 也许这只是一个小的或者一些小的错误,但我找不到它们。我也尝试过jsFiddle表单仍然提交时返回false(看不到错误)

<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

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

+0

在代码乍一看,这似乎是做它应该是什么。你可以编辑你的问题,并描述*发生了什么以及你希望发生什么? –

回答

-1

使用jquery。

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

在这里看到:http://jsfiddle.net/U6UC3/

0

你可以使用jQuery

$("#searchButton2").click(function(e){ 
    e.preventDefault(); 
    alert('abort'); 
}); 

JSFIDDLE

+0

发表了一个有效的答案,它得到2票反对没有解释 - 谢谢 – jmore009

+2

我知道,感觉兄弟:)我认为他们没有寻找替代解决方案。 –

+1

@ jmore009在那里,投票支持你:) – APAD1

1

你需要失去的onsubmit标签做到这一点。只是返回它FALSE不会完全实现你要去的东西。看起来你想调用一个函数,如果验证失败,可能会返回“false”。这是处理这个问题的好方法。

您需要的函数调用连接到您的提交按钮

onclick="go_search()" 

而且你的函数里面,使表单提交,如果你想(验证后)。

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

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

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

不正确。只要表单被正常提交(例如,从实际的提交按钮)而不是通过编程方式提交,表单将从* form上的onsubmit处理程序返回*将阻止提交表单。 @ j08691的回答是正确的 – CupawnTae

+0

好的。尽管如此,他仍然在处理错误。 你为什么要提交“返回false”?我试图说明一种更好的方式来处理他正在寻找的行为。 – durbnpoisn

+0

我不确定你的意思是*提交*“返回false”。我会假设他正在尝试编写一个验证函数,并且在测试中他硬连线返回false。这种方法没有错 - 这就是机制存在的全部原因。这里的实际问题是(1)处理程序不可见,因为它是在函数范围内定义的;(2)它没有被调用,因为表单是以编程方式提交的,而不是提交按钮 – CupawnTae

2

有你的小提琴的两个问题。

  1. 您的JavaScript函数被封装在一个window.load处理程序中,并将其放在错误的作用域中。只要把它放在头上就足够了。
  2. 你的按钮有类型按钮,不提交。您的按钮中的onclick="form.submit();"正在运行并提交表单,因为正在触发提交,而不是触发表单的提交处理程序(onsubmit="return go_search();")。将按钮的类型从按钮更改为提交将解决该问题。

jsFiddle example

相关问题