【问题标题】:Prevent tab change if validation fails - easyResponsiveTabs如果验证失败,防止选项卡更改 - easyResponsiveTabs
【发布时间】:2018-05-11 13:08:56
【问题描述】:

我在我的应用程序中实现了 easyResponsiveTabs。在每个选项卡中,我都使用 AjaxBeginForm 来发布我的数据。我正在通过单击隐藏的保存按钮更改选项卡时保存我的数据。

如果验证失败,我想防止标签更改。有没有可用的选项。 我在更改选项卡时按照以下代码保存数据:

 $('#ulTab').on("click", "li", function (event) {
        var activeTab = $(this).find('a').data("tabid");           
        var hdnActivetabIndex = $("#hdnActivetabIndex");
        $("#hdnActivetabIndex").val('');
        var btnsave = $("#btnsavetab");
        if (btnsave != null && hdnActivetabIndex != null && btnsave.prop("disabled") == false) {
            hdnActivetabIndex.val(activeTab);
            btnsave.click();
        }
        else {
             Tab_Change(activeTab);
        }

    });
$('#divTabs').easyResponsiveTabs({
        type: 'default', //Types: default, vertical, accordion
        width: 'auto', //auto or any width like 600px
        fit: true, // 100% fit in a container
        tabidentify: 'horz_1', // The tab groups identifier
        activate: function (event) { // Callback function if tab is switched
            var $tab = $(this);
            var $info = $('#nested-tabInfo');
            var $name = $('span', $info);
            $name.text($tab.text());
            $info.show();
        }
    });

这里是点击按钮提交的表单。

【问题讨论】:

  • 有很多选项卡,每个选项卡都有自己的验证功能。但一般来说,如果验证失败,我会返回 false。

标签: jquery tabs


【解决方案1】:

添加 return false 以停止传播。

我建议你也将选择器更改为$('#ulTab li')

$('#ulTab li').click(function (event) {
    var activeTab = $(this).find('a').data("tabid");           
    var hdnActivetabIndex = $("#hdnActivetabIndex");
    $("#hdnActivetabIndex").val('');
    var btnsave = $("#btnsavetab");
    if (btnsave != null && hdnActivetabIndex != null && btnsave.prop("disabled") == false) {
        hdnActivetabIndex.val(activeTab);
        btnsave.click();
        return false;
    }
    else {
         Tab_Change(activeTab);
    }

});

【讨论】:

  • 我返回了 false,但是当另一个选项卡单击时,该选项卡显示为选中
  • 我不确切知道您使用的是什么插件,但想法是停止将事件传播到插件事件处理程序。您可以返回 false 或使用 event.StopPropagation() 和 event.StopImmediatePropagation() 来执行此操作。阻止事件传播,插件不会采取任何行动,并且会保持您的标签完好无损。
  • 我用过easyResponsiveTabs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
相关资源
最近更新 更多