2013-10-25 40 views
0

在窗體中,我有一個按鈕和一個圖像...當我點擊圖像時,表單動作被調用,工作...但是當我點擊按鈕動作不被調用。 是否有一個特定的事情要做的按鈕?窗體動作調用按鈕

JS

$('#formUser').submit(function() { 
    $(this).attr("action", "/secure/downloaduserinfo/" + reportName); 
}); 


$('#formUser').submit(function() { 
    $(this).attr("action", "/secure/deleteuser/" + reportName); 
}); 

Web部件

<button type="button" id="deleteUserButton${statusReport.count}"></button> 

<input id="downloadUserButton${statusReport.count}" type="image"/> 

回答

1

type="button"元素沒有提交按鈕,它們的存在僅僅運行客戶端代碼。

如果要提交表單,請使用type="submit"(或者完全不指定類型屬性,submit爲默認值)。


這就是說,我會避免依賴JavaScript。給出按鈕和名稱以及值,並使用服務器上的來確定是否要下載或刪除。

1

「image」類型的輸入與「submit」類似,它確實提交表單,這就是您的提交處理程序正在工作的原因。雖然類型「按鈕」的輸入不提交表單,但它看起來像一個按鈕。

+0

的問題是:當我刪除按鈕點擊,這一次通話的對話......它顯示對話框並關閉直接....所以不要以爲我可以使用提交類型 –

0

您有2個提交相同元素的監聽器,因此每次提交#formUser時都會使用它找到的第一個提交偵聽器。

您可以使用onclick偵聽器並將其綁定到被單擊的特定元素。

我不確定它看起來像你使用的模板系統是如何綁定的,但我會使用類而不是id。

<button type="button" class="delete-user-button" id="deleteUserButton99">Delete</button> 
<img src="http://placehold.it/200x200" class="download-user-button" id="downloadUserButton99"/> 



<script> 
    $('.delete-user-button').click(function() { 
     // store object that was clicked 
     var obj = $(this); 

     // set that objects action attribute 
     obj.attr("action", "/secure/deleteuser/" + obj.attr('id')); 

     // show the action attribute's value 
     alert(obj.attr('action')); 
    }); 


    $('.download-user-button').click(function() { 
     // store object that was clicked 
     var obj = $(this); 

     // set that objects action attribute 
     obj.attr("action", "/secure/downloaduserinfo/" + obj.attr('id')); 

     // show the action attribute's value 
     alert(obj.attr('action')); 
    }); 
    </script> 

以下是一個演示通過點擊監聽器操作物體小提琴:http://jsfiddle.net/chapmanc/HHfQT/2/