【发布时间】:2021-04-01 02:00:31
【问题描述】:
我想在更改选择时隐藏输入中的多个选项(例如,我选择最后一个选项,然后选择第一个选项)我输入相同的顺序。
$('select').change(function() {
var str = "";
// For multiple choice
$("select option:selected").each(function() {
str = $(this).val() + str + " ";
});
alert(str);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="brands[]" class="chosen selectbrands fixed-width-xl" id="brands[]" multiple="multiple">
<option value="1">BASTIEN test0</option>
<option value="2">BASTIEN test1</option>
<option value="3">BASTIEN test2</option>
</select>
现在如果我改变例如
(BASTIEN test1/BASTIEN test2/BASTIEN test0)
当我运行我的代码时,我得到了
(BASTIEN test0/BASTIEN test1/BASTIEN test2)
我的代码可以正常工作,但是当我选择最后一个然后是第二个时,这里的问题是当我选择第三个时它们不起作用并且我没有在我的 var 中获得我的选项的值
【问题讨论】:
-
请注意,您将使用
"select option:selected"选择器获取页面上所有select元素的所有选定选项。你可能想要$(this).find("option:selected")。如果您提供运行此代码的 HTML 以便人们可以重现该问题,那就更好了。您可以使用 Stack Snippets(图标在编辑器工具栏中看起来像<>)来生成可运行的 sn-p,如答案所示。 -
如果您添加您的html代码和所需的输出以使您的问题更清晰会更好
-
标准
select multiple不会记录您选择选项的order(我理解问题中相当混乱的措辞)。多选应该没关系。如果确实很重要,那么您应该使用不同的 UI 组件,例如列表选择器(两个列表并排,您可以在其中重新排序第二个列表) - 否则您会搞砸用户的 UX/预期操作。 -
我在我的代码中添加了一个示例,您可以检查一下!
-
是的,
select multiple就是这样工作的——如果你想要不同的东西,那就使用不同的组件。 可能有一个 3rd 方包装器可以满足您的需求,但不太可能,因为它不是该组件的 UX。
标签: javascript jquery