选择多选元素时的行为不一致
Inconsistent behaviour when selecting multi-select element
我有一个模式对话框,它有一个多选表单元素。在屏幕上,我有两个按钮,每个按钮都有不同的相关选项(一个与"Admins"相关,另一个与"Users"相关)
当用户单击任何按钮时,jQuery会识别该按钮与哪个选项关联,然后在模式对话框中的多选列表元素上预先选择该选项。到目前为止一切都很好。如果我只做一次,这个功能就可以工作,但如果我重复做,或者选择一个按钮,然后选择另一个按钮时,选项不会显示为预先选择的。我无法确定错误在哪里。
任何见解都值得赞赏-链接到jsFiddle
jQuery代码如下-不确定如果我随机选择按钮,为什么会出现不一致的行为
$(document).on("click", ".btn", function () {
$('.modal-body #name').val('John');
$('.modal-body #email').val('john@acme.com');
var groupNames = $(this).data('group-names');
$('.modal-body #groups > option').each(function () {
if (groupNames.search($(this).text()) == 0) {
$(this).attr('selected', true);
} else {
$(this).attr('selected', false);
}
});
});
尝试使用val()
设置<select>
的值。这比在每个选项上循环要简单得多
$(document).on("click", ".btn", function () {
var groupNames = $(this).data('group-names');
$('.modal-body #groups').val(groupNames);
});
DEMO
@charlietfl的响应是最好的方法。但是,您的代码工作不一致的原因(在某些浏览器中)是您应该设置所选的属性,而不是属性,如下所示:
$(this).prop('selected', 'selected');
相关文章:
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- [Vue warn]:找不到元素
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- Android和JavaScript解析API之间不一致
- Javascript的行为与PHP包含文件不一致
- 对这种与document.domain和CORS相关的不一致行为的解释是什么
- 点击链接行为不一致
- 在页面中找不到元素的正确位置.函数未考虑填充
- Passport.js`isAuthenticated()`不一致的行为;当它应该是真的时候是假的
- JQuery找不到元素
- 量角器-如何从中继器而不是元素中获得实际值
- 获取不可见元素的高度
- 更改整个类的不透明度元素
- 与显示不一致
- Ext 4.2.1 模型日期解析在浏览器之间不一致
- 通过 Dropbox API 上传时的文件内容不一致
- JavaScript - 对象属性不一致
- 包含自定义字体文本的元素的jQuery height()似乎不一致
- 选择多选元素时的行为不一致
- Ipad iOS不一致滚动:禁用主体滚动,但允许在某些元素上滚动