【发布时间】:2014-03-22 07:40:04
【问题描述】:
过滤列表框并将项目移动到另一个选择列表时出现问题
当我使用 jQuery 将一个列表框项移动到另一个列表框时,我遇到了一个奇怪的场景。
当我在输入框中键入文本时,我在源列表框上做了一个过滤器,然后第一个列表框根据我的需要给我过滤的结果。然后我点击添加按钮>项移到右侧,也OK, 但是当我单击输入文本框并按反斜杠时,右移项目返回到提升列表。这是错误的。
有人可以帮忙吗?
<script>
var showOnlyOptionsSimilarToText = function (selectionEl, str, isCaseSensitive) {
if (isCaseSensitive)
str = str.toLowerCase();
// cache the jQuery object of the <select> element
var $el = $(selectionEl);
if (!$el.data("options")) {
// cache all the options inside the <select> element for easy recover
$el.data("options", $el.find("option").clone());
}
var newOptions = $el.data("options").filter(function () {
var text = $(this).text();
if (isCaseSensitive)
text = text.toLowerCase();
return text.match(str);
});
$el.empty().append(newOptions);
};
$(document).ready(function () {
$("#btnAddAllBeneficiaries,#btnRemoveAllBeneficiaries").click(function (event) {
var ID = $(event.target).attr("ID");
if (ID == "btnRemoveAllBeneficiaries") { if (!confirm("Do you want to remove item")) { return; } }
var ChooseFrom = ID == "btnAddAllBeneficiaries" ? "#BeneficiariesList" : "#assignedBeneficiariesList";
var moveTo = ID == "btnAddAllBeneficiaries" ? "#assignedBeneficiariesList" : "#BeneficiariesList";
var SelectData = $(ChooseFrom + " > option").toArray();
$(moveTo).append(SelectData);
SelectData.remove;
});
$("#btnAddBeneficiaries,#btnRemoveBeneficiaries").click(function (event) {
var ID = $(event.target).attr("ID");
if (ID == "btnRemoveBeneficiaries") { if (!confirm("Do you want to remove item")) { return; } }
var ChooseFrom = ID == "btnAddBeneficiaries" ? "#BeneficiariesList" : "#assignedBeneficiariesList";
var moveTo = ID == "btnAddBeneficiaries" ? "#assignedBeneficiariesList" : "#BeneficiariesList";
var SelectData = $(ChooseFrom + " :selected").toArray();
$(moveTo).append(SelectData);
SelectData.remove;
});
$("#SearchBeneficiaries").on("keyup", function () {
var userInput = $("#SearchBeneficiaries").val();
showOnlyOptionsSimilarToText($("#BeneficiariesList"), userInput, true);
});
});
</script>
【问题讨论】: