【问题标题】:Change event is fired once for a select if dialog is escaped or clicked out side如果对话框被转义或单击,则为选择触发一次更改事件
【发布时间】:2016-10-19 20:54:26
【问题描述】:

如果用户从另一个选择字段中选择特定选项,我正在尝试编写这个简单的 Javascript 逻辑来禁用多选字段。这是一个 JIRA dialog2,所以我使用他们的 JQuery 命名空间(例如:AJS)。

问题是当我打开对话框并从选择字段中选择特定值时,选择字段的更改事件的处理程序正常运行,而另一个多选字段被禁用。但是,如果对话框通过按退出按钮或在其外部单击关闭,而不是通过单击“关闭”按钮将其关闭,则 sn-p 不会被调用/不会运行。我不是 js 专家,如果有任何帮助,我将不胜感激。

(function($) {
  $(function() {
    AJS.dialog2.on("show", function(e) {
      var targetId = e.target.id;
      var spinning = false;
      if (targetId == "sr-dialog") {
        //start of the part that fails
        //noticing that the change event for the searchtypeselect field is fired only when the dialog shows up first time and re shows again only if the dialog got closed by the 'close' button. If dialog escaped it doesn't fire anymore.
        var $searchTypeSelect = AJS.$("#select-searchtype");
        var $fieldMultiSelect = AJS.$("#field-multiselect");
        $searchTypeSelect.change(function(e) {
          if ($searchTypeSelect.val() == 'D' || searchTypeSelect.val() == 'S') {
            $fieldMultiSelect.removeAttr('disabled');
          } else {
            $fieldMultiSelect.attr('disabled', 'disabled').val('');
          }
        }).trigger('change');
        // end of the part that fails

        AJS.$(e.target).find("#submit-spinner-trigger").click(function(e) {
          var number = AJS.$("input[type=radio]:checked", "#topSearchForm").val();
          var searchType = AJS.$("#select-searchtype option:selected", "#topSearchForm").val();
          var fields = [];
          AJS.$("#field-multiselect :selected", "#topSearchForm").each(function(i, selected) {
            fields[i] = $(selected).val();
          });
          var since = AJS.$("#select-since option:selected", "#topSearchForm").val();
          if (!spinning) {
            AJS.$('.button-spinner').spin();
            spinning = true;
          }
        });
      }
    });
  });
})(AJS.$);

【问题讨论】:

    标签: javascript jquery dialog jira


    【解决方案1】:

    我认为这与 JIRA 或 AUI 无关。这只是一个 JavaScript 问题。

    您希望通过单击顶部的“退出”或“x”来处理对话框“关闭”时的事件。这些帖子回答了:

    【讨论】:

      【解决方案2】:

      感谢 GlennV。实际上,将事件处理程序与屏幕上的特定项目挂钩也有助于解决问题。

      回复here

      【讨论】:

        猜你喜欢
        • 2015-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多