【发布时间】:2019-08-29 17:52:55
【问题描述】:
有 4 个下拉菜单,每个下拉菜单都内置了搜索文本框。在下拉列表的所有搜索文本框中添加了 keyup 事件。此 keyup 事件在按预期加载文档后工作正常,但在下拉菜单中选择项目时,触发器的工作方式是根据所选值填充其他下拉菜单。因此,在下拉选择填充其他 3 个下拉列表时的级联效果之后,keyup 事件不起作用。
<script type="text/javascript">
$(document).ready(function () {
$("#ProductCategory").multiselect({
buttonWidth: '100%',
includeSelectAllOption: true,
enableFiltering: true,
enableCaseInsensitiveFiltering: true,
nonSelectedText: 'Choose',
onDropdownHide: function (event) {
//alert('Hide event invoked!');
var productcategory = $("#ProductCategory").val();
alert(productcategory);
//$('#ProductCategory').multiselect('rebuild');
if (productcategory != null && productcategory != "") {
var ReportHeading = @Html.Raw(Json.Serialize(ViewData["ReportHeading"]));
//For Selection Filter Partial View
$(".filter-loader").css("display", "block");
$.ajax({
url: '@Url.Action("OnChangeProductCategory", "SalesByCustomer")',
type: "POST",
data: { 'PC': '' + productcategory + '', 'RH': '' + ReportHeading +'' },
datatype: "text",
async: true,
contenttype: 'application/json; charset=utf-8',
success: function (data) {
//alert(data);
var json_objbr = $.parseJSON(data.branddata);
var brli = [];
jQuery.each(json_objbr, function (i, item) {
brli.push({
'label': item,
'value': item,
'selected':true
})
});
//alert(brli);
$('#Brand').multiselect('dataprovider', brli);
var json_objItm = $.parseJSON(data.itemdata);
var Itmli = [];
jQuery.each(json_objItm, function (i, item) {
Itmli.push({
'label': item["ItemCodeandDesc"],
'value': item["ItemCode"],
'selected': true
})
});
$('#Item').multiselect('dataprovider', Itmli);
var json_objSrp = $.parseJSON(data.salesrepdata);
var Srpli = [];
jQuery.each(json_objSrp, function (i, item) {
Srpli.push({
'label': item,
'value': item,
'selected': true
})
});
$('#SalesRep').multiselect('dataprovider', Srpli);
$(".filter-loader").css("display", "none");
},
error: function (xhr) {
alert('Unable to Connect Server');
$(".filter-loader").css("display", "none");
}
});
}
}
});
$("#Brand").multiselect({
buttonWidth: '100%',
includeSelectAllOption: true,
enableFiltering: true,
enableCaseInsensitiveFiltering: true,
nonSelectedText: 'Choose',
onDropdownHide: function (event) {
//alert('Hide event invoked!');
var brand = $("#Brand").val();
if (brand != null && brand != "") {
var ReportHeading = @Html.Raw(Json.Serialize(ViewData["ReportHeading"]));
$(".filter-loader").css("display", "block");
//For Selection Filter Partial View
$.ajax({
url: '@Url.Action("OnChangeBrand", "SalesByCustomer")',
type: "POST",
data: { 'Br': '' + brand + '', 'RH': '' + ReportHeading + '' },
datatype: "text",
async: true,
contenttype: 'application/json; charset=utf-8',
success: function (data) {
var json_objpc = $.parseJSON(data.pcdata);
var pcli = "";
for (var i in json_objpc) {
pcli += '<option value="' + json_objpc[i] + '" selected>' + json_objpc[i] + '</option>';
}
$('#ProductCategory').find('option').remove();
$('#ProductCategory').append(pcli);
$('#ProductCategory').multiselect('rebuild');
var json_objItm = $.parseJSON(data.itemdata);
var Itmli = "";
for (var i in json_objItm) {
Itmli += '<option value="' + json_objItm[i].ItemCode + '" selected>' + json_objItm[i].ItemCodeandDesc + '</option>';
}
$('#Item').find('option').remove();
$('#Item').append(Itmli);
$('#Item').multiselect('rebuild');
var json_objSrp = $.parseJSON(data.salesrepdata);
var Srpli = "";
for (var i in json_objSrp) {
Srpli += '<option value="' + json_objSrp[i] + '" selected>' + json_objSrp[i] + '</option>';
}
$('#SalesRep').find('option').remove();
$('#SalesRep').append(Srpli);
$('#SalesRep').multiselect('rebuild');
//$("#BindFilter").html(data);
$(".filter-loader").css("display", "none");
},
error: function (xhr) {
alert('Unable to Connect Server');
$(".filter-loader").css("display", "none");
}
});
}
}
});
$("#Item").multiselect({
buttonWidth: '100%',
includeSelectAllOption: true,
enableFiltering: true,
enableCaseInsensitiveFiltering: true,
nonSelectedText: 'Choose',
onDropdownHide: function (event) {
//alert('Hide event invoked!');
var item = $("#Item").val();
if (item != null && item != "") {
var ReportHeading = @Html.Raw(Json.Serialize(ViewData["ReportHeading"]));
$(".filter-loader").css("display", "block");
//For Selection Filter Partial View
$.ajax({
url: '@Url.Action("OnChangeItem", "SalesByCustomer")',
type: "POST",
data: { 'Itm': '' + item + '', 'RH': '' + ReportHeading + '' },
datatype: "text",
async: true,
contenttype: 'application/json; charset=utf-8',
success: function (data) {
//alert(data);
var json_objpc = $.parseJSON(data.pcdata);
var pcli = "";
for (var i in json_objpc) {
pcli += '<option value="' + json_objpc[i] + '" selected>' + json_objpc[i] + '</option>';
}
$('#ProductCategory').find('option').remove();
$('#ProductCategory').append(pcli);
$('#ProductCategory').multiselect('rebuild');
var json_objbr = $.parseJSON(data.branddata);
var brli = "";
for (var i in json_objbr) {
brli += '<option value="' + json_objbr[i] + '" selected>' + json_objbr[i] + '</option>';
}
$('#Brand').find('option').remove();
$('#Brand').append(brli);
$('#Brand').multiselect('rebuild');
var json_objSrp = $.parseJSON(data.salesrepdata);
var Srpli = "";
for (var i in json_objSrp) {
Srpli += '<option value="' + json_objSrp[i] + '" selected>' + json_objSrp[i] + '</option>';
}
$('#SalesRep').find('option').remove();
$('#SalesRep').append(Srpli);
$('#SalesRep').multiselect('rebuild');
//$("#BindFilter").html(data);
$(".filter-loader").css("display", "none");
},
error: function (xhr) {
alert('Unable to Connect Server');
$(".filter-loader").css("display", "none");
}
});
}
}
});
$("#SalesRep").multiselect({
buttonWidth: '100%',
includeSelectAllOption: true,
enableFiltering: true,
enableCaseInsensitiveFiltering: true,
nonSelectedText: 'Choose',
onDropdownHide: function (event) {
//alert('Hide event invoked!');
var salesrep = $("#SalesRep").val();
if (salesrep != null && salesrep != "") {
var ReportHeading = @Html.Raw(Json.Serialize(ViewData["ReportHeading"]));
$(".filter-loader").css("display", "block");
//For Selection Filter Partial View
$.ajax({
url: '@Url.Action("OnChangeSalesRep", "SalesByCustomer")',
type: "POST",
data: { 'Srp': '' + salesrep + '', 'RH': '' + ReportHeading + '' },
datatype: "text",
async: true,
contenttype: 'application/json; charset=utf-8',
success: function (data) {
//alert(data);
var json_objpc = $.parseJSON(data.pcdata);
var pcli = "";
for (var i in json_objpc) {
pcli += '<option value="' + json_objpc[i] + '" selected>' + json_objpc[i] + '</option>';
}
$('#ProductCategory').find('option').remove();
$('#ProductCategory').append(pcli);
$('#ProductCategory').multiselect('rebuild');
var json_objbr = $.parseJSON(data.branddata);
var brli = "";
for (var i in json_objbr) {
brli += '<option value="' + json_objbr[i] + '" selected>' + json_objbr[i] + '</option>';
}
$('#Brand').find('option').remove();
$('#Brand').append(brli);
$('#Brand').multiselect('rebuild');
var json_objItm = $.parseJSON(data.itemdata);
var Itmli = "";
for (var i in json_objItm) {
Itmli += '<option value="' + json_objItm[i].ItemCode + '" selected>' + json_objItm[i].ItemCodeandDesc + '</option>';
}
$('#Item').find('option').remove();
$('#Item').append(Itmli);
$('#Item').multiselect('rebuild');
//$("#BindFilter").html(data);
$(".filter-loader").css("display", "none");
},
error: function (xhr) {
alert('Unable to Connect Server');
$(".filter-loader").css("display", "none");
}
});
}
}
});
$("#DeselectCategoryOptions").find('.multiselect-search').keyup(function () {
var str = $(this).val();
var allSelectedCat = $("#ProductCategory option:not(:selected)").length == 0;
//alert(str);
if (allSelectedCat == true) {
DeselectCategoryFilter(str);
}
});
$("#DeselectBrandOptions").find('.multiselect-search').keyup(function () {
var str = $(this).val();
alert(str);
var allSelectedBra = $("#Brand option:not(:selected)").length == 0;
if (allSelectedBra == true) {
DeselectBrandFilter(str);
}
});
$("#DeselectItemOptions").find('.multiselect-search').keyup(function () {
var str = $(this).val();
var allSelectedItem = $("#Item option:not(:selected)").length == 0;
if (allSelectedItem == true) {
DeselectItemFilter(str);
}
});
$("#DeselectSalesRepOptions").find('.multiselect-search').keyup(function () {
var str = $(this).val();
var allSelectedSalesRep = $("#SalesRep option:not(:selected)").length == 0;
if (allSelectedSalesRep == true) {
DeselectSalesRepFilter(str);
}
});
//alert(ReportHeading);
});
function DeselectCategoryFilter(str) {
@*var PCArray = @Html.Raw(Json.Serialize(ViewData["ProductCategory"]));
//alert(PCArray);
for (i = 0; i < PCArray.length; i++) {
//alert(PCArray[i]);
$('#ProductCategory').multiselect('deselect', PCArray[i]);
}*@
$('#ProductCategory').multiselect('deselectAll', true);
$("#DeselectCategoryOptions").find('.multiselect-search').focus();
$("#DeselectCategoryOptions").find('.multiselect-search').val(str);
}
function DeselectBrandFilter(str) {
@*var BrArray = @Html.Raw(Json.Serialize(ViewData["Brand"]));
//alert(BrArray);
for (i = 0; i < BrArray.length; i++) {
$('#Brand').multiselect('deselect', BrArray[i]);
}*@
$('#Brand').multiselect('deselectAll', true);
$("#DeselectBrandOptions").find('.multiselect-search').focus();
$("#DeselectBrandOptions").find('.multiselect-search').val(str);
}
function DeselectItemFilter(str) {
@*var BrArray = @Html.Raw(Json.Serialize(ViewData["Brand"]));
//alert(BrArray);
for (i = 0; i < BrArray.length; i++) {
$('#Brand').multiselect('deselect', BrArray[i]);
}*@
$('#Item').multiselect('deselectAll', true);
$("#DeselectItemOptions").find('.multiselect-search').focus();
$("#DeselectItemOptions").find('.multiselect-search').val(str);
}
function DeselectSalesRepFilter(str) {
@*var BrArray = @Html.Raw(Json.Serialize(ViewData["Brand"]));
//alert(BrArray);
for (i = 0; i < BrArray.length; i++) {
$('#Brand').multiselect('deselect', BrArray[i]);
}*@
$('#SalesRep').multiselect('deselectAll', true);
$("#DeselectSalesRepOptions").find('.multiselect-search').focus();
$("#DeselectSalesRepOptions").find('.multiselect-search').val(str);
}
//leftside filter click script
$(document).ready(function () {
$('.filter-close').click(function (e) {
$('.left-wrapper').removeClass('slide');
$('.logout-li li').removeClass('active');
//e.stopPropagation();
});
});
更新:
我试过的是:
- 将 keyup 侦听器事件移到 document.ready 之外。
- 在加载选项下拉列表后移动了 keyup 侦听器。
两种情况,keyup 事件都没有触发。
【问题讨论】:
-
已添加代码示例