2016-06-17 3 views
1

사용자가 다른 선택 필드에서 특정 옵션을 선택한 경우이 간단한 자바 스크립트 로직을 사용하여 다중 선택 필드를 사용하지 않으려합니다. 이것은 JIRA 대화 2이므로 JQuery 네임 스페이스 (예 : AJS)를 사용하고 있습니다. 문제는 대화 상자를 열고 선택 필드에서 특정 값을 선택하면 선택 필드의 변경 이벤트에 대한 처리기가 제대로 실행되고 다른 다중 선택 필드가 비활성화됩니다. 그러나 '닫기'버튼을 클릭하여 대화 상자를 닫는 대신 대화 상자가 이탈 버튼을 누르거나 외부 버튼을 클릭하여 닫힌 경우 스 니펫이 호출되지 않거나 실행되지 않습니다. 나는 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.$); 

답변

0

감사 GlennV :이 게시물은 대답. 실제로 이벤트 처리기를 화면의 특정 항목에 연결하여 문제를 해결하는 데 도움이되었습니다.

답변 됨 here