2013-03-26 50 views
-1

我有一個非常簡單的窗體,它只有兩個小按鈕。一種類型:隱藏另一種類型:圖像。語義結構:爲什麼我的輸入類型圖像做回發

<form id = "whatever" method = "post" action = "<?php echo $self; ?>" > 
<input type = "hidden" value ="whateverelse"> 
<input type = "image" src="www.someweburl.com/resource.gif" id="notsubmit"> 
</form> 

形式看起來不錯,因爲它應該。問題是,當我點擊圖像按鈕時,它實際上會回發。這不是一個真正的提交按鈕,所以不知道提交的原因。我打算讓它實際提交,所以有一個jQuery的處理程序,做這樣的事情:

$('#notsubmit').submit(function(event) { 

event.preventDefault(); 
// do my business logic 
// make some food 
// whatever else I want to do 
$('#whatever').submit(); 

}); 

就是這樣。問題是提交仍然發生,而沒有真正執行提交處理程序中的代碼。我評論了提交功能,但它仍然提交。

任何想法?

+6

難道你不能拿出更多信息標題? – 2013-03-26 17:17:32

+1

這個標題阻止我對他的問題感興趣... – writeToBhuwan 2013-03-26 17:18:35

+1

耶伊我,我讀了它,並取得了很好的稱號。爲什麼所有5位最高選民和菲利克斯都無法做到這一點是一個奇蹟。 – Hogan 2013-03-26 17:19:27

回答

2

它不是一個真正的提交按鈕,不知道爲什麼會發生提交。

這是一個提交按鈕。我引用HTML specification有關image類型:

創建一個圖形submit buttonsrc屬性的值指定將裝飾按鈕的圖像的URI。出於可訪問性原因,作者應通過alt屬性爲圖像提供替代文本。


的問題是提交仍然沒有發生真正發生有關執行提交處理程序中的代碼。

這是因爲submit事件從未上的按鈕觸發,處理程序從不執行,並且永遠不會阻止默認動作(表單提交)。你必須一click事件處理程序綁定到替代按鈕:

$('#notsubmit').click(function(event) { 
    event.preventDefault(); 
}); 

submit事件只觸發form元素。

+1

真棒,謝謝你在這引用HTML規範,:) – 2013-03-26 17:23:33

+0

喲..我只是做了這個..該死的形式仍然提交 – 2013-03-26 17:34:20

+0

嗯,也許你必須調用'event.stopPropgation()'以及。我不太確定點擊提交按鈕是如何啓動表單提交的。 – 2013-03-26 17:35:55

2
$('#notsubmit').click(function(event) { 
    // do my business logic 
    // make some food 
    // whatever else I want to do 
    $('#whatever').submit(); 
    return false; 
}); 
+0

謝謝,我還提到我在我的jQuery代碼中註釋了submit函數,但它仍然會提交,無論如何。 – 2013-03-26 17:22:46

相關問題