我有这样的网页,红色部分是部分视图,包括蓝色部分中选项卡式表单的操作。实际上,每个选项卡也是一个视图,CustomerDef视图通过这样的kendo ajax tabstrip tool来调用它们;
<input title="Save" type="button" value="Save" onclick="toolbarSaveAction();" class="toolbarButton toolbarBtnMarginLeft" />
对于保存操作,我在根脚本文件中有一个通用的javascript方法 SaveRecord 。在局部视图上,对于onclick事件,我有一个方法toolbarSaveAction。在每个选项卡视图上,我通过放置通用SaveRecord方法来调用click事件。这就是它的样子;
PartialButtonView
function SaveRecord(action, controller, param, customData) {
var form = $("[aria-expanded=true]").find("form");
var validator = form.kendoValidator().data("kendoValidator");
if (validator.validate()) {
var data = form.serialize();
$.ajax({
url: '/' + controller + '/' + action,
dataType: 'json',
type: 'POST',
data: data,
success: function (response) {
if (response !== null && !response.success) {
..
}
else {
..
}
},
error: function (xhr, ajaxOptions, thrownError) {
..
}
});
}
}
Root.js
<script>
function toolbarSaveAction() {
SaveRecord('CustomerInfo', 'Customer', ['customerId']);
}
</script>
CustomerInfo查看
<script>
function toolbarSaveAction() {
SaveRecord('CustomerAddress', 'Customer', ['customerId']);
}
</script>
CustomerAddress查看
{{1}}
这是我的问题,对于每个标签视图,我有一个toolbarSaveAction()方法用于保存点击事件。当CustomrDef页面的第一个请求仅加载第一个选项卡时,保存操作正常工作,但是如果我单击其他选项卡,页面上将加载多个视图,这意味着将有多个toolbarSaveAction()。因此,单击保存操作时,如何处理选择正确的方法?
答案 0 :(得分:1)
嗨在dom中维护一个隐藏变量然后在kendo选项卡上选择将当前标签文本分配给该元素
<input type="hidden" name="hdnSelectedTab" id="hdnSelectedTab"/>
然后在javascript中
$(document).ready(function() {
function onSelect(e) {
$('#hdnSelectedTab').val($(e.item).find("> .k-link").text());
}
});
现在只有一个动作作为toolbarSaveAction
<script>
function toolbarSaveAction(selectedTab) {
SaveRecord('CustomerInfo', 'Customer', ['customerId'],selectedTab);
}
</script>
并将按钮中的标签值作为
传递<input title="Save" type="button" value="Save" onclick="toolbarSaveAction($('#hdnSelectedTab').val());" class="toolbarButton toolbarBtnMarginLeft" />
然后最终进入
function SaveRecord(action, controller, param, customData,selectedTab) {
switch(selectedTab) {
case "Customer-Info":
// Implementation
break;
case "Identity":
//Implementation
break;
default:
//default Implementation
}
}