如果对话框被转义或单击,则 select 会触发一次更改事件
Change event is fired once for a select if dialog is escaped or clicked out side
我正在尝试编写这个简单的 Javascript 逻辑,以在用户从另一个 select 字段中选择特定选项时禁用 multiselect 字段。这是一个 JIRA dialog2,所以我正在使用他们的 JQuery 命名空间(例如:AJS)。
问题是当我打开对话框并且 select 来自 select 字段的特定值正确处理 select 字段 运行s 的更改事件另一个 multiselect 字段被禁用。但是,如果通过按退出按钮或在其外部单击关闭对话框而不是通过单击 'close' 按钮关闭对话框,则该代码段不是 called/doesn 而不是 运行。我不是 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.$);
我认为这与 JIRA 或 AUI 无关。这只是一个 javascript 问题。
您想通过单击顶部的 'escape' 或 'x' 在对话框获得 'closed' 时处理事件。这些帖子回答说:
- Hook into dialog close event
- How to handle ESC keydown on javascript popup window
谢谢 GlennV。实际上,将事件处理程序挂接到屏幕上的特定项目也有助于解决问题。
已回答here
我正在尝试编写这个简单的 Javascript 逻辑,以在用户从另一个 select 字段中选择特定选项时禁用 multiselect 字段。这是一个 JIRA dialog2,所以我正在使用他们的 JQuery 命名空间(例如:AJS)。
问题是当我打开对话框并且 select 来自 select 字段的特定值正确处理 select 字段 运行s 的更改事件另一个 multiselect 字段被禁用。但是,如果通过按退出按钮或在其外部单击关闭对话框而不是通过单击 'close' 按钮关闭对话框,则该代码段不是 called/doesn 而不是 运行。我不是 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.$);
我认为这与 JIRA 或 AUI 无关。这只是一个 javascript 问题。
您想通过单击顶部的 'escape' 或 'x' 在对话框获得 'closed' 时处理事件。这些帖子回答说:
- Hook into dialog close event
- How to handle ESC keydown on javascript popup window
谢谢 GlennV。实际上,将事件处理程序挂接到屏幕上的特定项目也有助于解决问题。
已回答here