2015-05-01 42 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