2015-05-01 72 views
0

基本的想法是有一個網格,用戶雙擊該行並用panel-body節打開一個模式窗口(Bootstrap面板)編輯數據,panel-footerbtn-group「保存」,「取消」或者「關閉」,並且內置一些邏輯來相應地處理按鈕的狀態和onclick事件。是否可以共享不同形式的按鈕點擊?

因爲會有很多網格和許多模態窗口在整個項目中,雖然panel-body節會爲他們每個人都各不相同,panel-footer將可能是同爲所有這些,我想只有一個panel-footer使用作爲模板,但我不知道如何去做。

目前,這裏是它如何工作的:

  1. 在該項目中,有兩種形式:frmCustomerfrmUnit
  2. frmCustomerpanel-footer有按鈕#btnSaveCust,#btnCancelCust#btnCloseCust

  3. jQuery的腳本有掛接到每個這些ID的事件和預期$(document).on("click", "#btnSaveCust", function() { SaveCust(); });

  4. frmUnit工作方式相同,除與名稱變更爲#btnSaveUnit和事件更改爲#btnSaveUnitSaveUnti()工作。

  5. 現在,如果我做了一個模板,按鈕的ID將變爲#btnSave,#btnCancel#btnClose

如何知道如何撥打SaveCust()SaveUnit()

更新1:我只是意識到,這是行不通的,因爲我們不能有重複的ID,共享視圖的btns(?模板)必須每次都以另一種形式使用時被重新命名

+0

你渲染每一個單獨的模式?或者你是否共享相同的模式並更換表單內容?如果是後者,你換了整個表格嗎?或者只是輸入元素?發佈一些代碼可能會幫助我們獲得更好的圖片。 (關於如何做到這一點,你有多種選擇,但根據你目前的做法,可能會比其他人更好)編輯:我錯過了一個重要的部分。您正在使用某種模板語言。也許傳遞按鈕ID作爲模板參數? – wholevinski

+0

@dubhov一種模式並交換整個表單。我還沒有創建模板,我仍然需要知道如何在Aspnet MVC 5 VS 2013中完成它。將id作爲參數傳遞的想法看起來像是一種解決方案。您可以爲模板和參數發佈一些代碼示例嗎? –

+1

我有0 ASPnet經驗.....但我會給它一個去!編輯:呃,我可能已經進入了我的頭。但是,我有一個想法。將按鈕放在表單中,然後使用jquery選擇器來確定按鈕行爲。就像'$(「#frmCustomer #btnSave」)。on(「click」,function(){saveCust();});'一定要設置按鈕的'type =「按鈕''否則它會嘗試提交你的表格並做一個頁面提交。 – wholevinski

回答

2

Here's something that should help

Updated fiddle, this one tells you which form the button is in

有關更新小提琴,點擊按鈕,打開模態。當你點擊按鈕時,我有一個動態添加到模式的表單。然後在模式中,點擊提交按鈕,它會提醒你所在的表單。關閉模式並嘗試另一個按鈕,你會看到它更新後的表單提示,然後點擊提交按鈕你點擊了哪個表格

這個想法是,你有一個按鈕事件處理程序的class而不是id。這將使具有某個類的任何按鈕的行爲方式相同。現在下一步是按鈕邏輯。

如果你看一下小提琴,我在那裏處理.open-button邏輯,我拿被點擊按鈕的id,字符串-modal追加到它,它會打開匹配模式。我相信你可以用表單複製這個表單,並使用某種匹配方式相同的名稱。

另外,查看關閉模式時出現的消息,您可以使用此類邏輯來定位form並執行form.submit或類似操作。這應該使所有的按鈕只有一個點擊事件處理程序,並適用於多種形式/模式

這比點擊事件處理程序,並擁有一堆if (something) else if (something) else etc...,你只是做一個快速和簡單的字符串處理,並得到您想要的元素並提交該表單。

讓我知道這是否有助於

+0

我在我的評論中做了一些假設,但我不認爲他是在嘗試做一個頁面提交,因此首先是點擊處理程序。那個,他在做網格工作,所以我認爲他依靠AJAX調用來發布他的數據。 – wholevinski

+0

你仍然可以點擊一個按鈕來執行ajax,我只是給了他一個模板,他可以自己找出其餘的,我確信 –

+0

這是一個很好的方法。除此之外,還有其他要考慮的事情就是將元素中的data屬性賦值給onClick。例如:' ..',then'$('。row-class')。click(function(e){var rowId = $(this).data('rowId');});' – mstrthealias