2014-05-20 92 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

相關問題