我有一个标准<select>..</select>
元素,我有一个由selectToUISlider()创建的滑块
问题是当滑块移动时,下拉列表中的选项不会改变。此外,当移动滑块时,它会在每个元素上设置selected="selected"
,以便在提交表单时,多个值将被POST,模拟多个选择选项。
我花了很多年时间试图找到底线,但没有运气。有没有人有任何想法?
答案 0 :(得分:1)
我在尝试实现您提到的类似功能时遇到了同样的问题。
问题是无论何时移动滑块,它都会保持设置选择列表的“已选择”属性而不清除以前选择的项目。我已经添加了一个脚本来清除以前选择的选项,然后再将其设置为新选项。
查看/搜索jquery脚本文件的第92行(.. ish)的文本。
//control original select menu
var currSelect = jQuery('#' + thisHandle.attr('id').split('handle_')[1]);
currSelect.find('option').eq(ui.value).attr('selected', 'selected');
并在2行之间插入此代码......
currSelect.find('option[selected]').removeAttr('selected');
所以最终的代码应该是这样的......
//control original select menu
var currSelect = jQuery('#' + thisHandle.attr('id').split('handle_')[1]);
currSelect.find('option[selected]').removeAttr('selected');
currSelect.find('option').eq(ui.value).attr('selected', 'selected');
我希望它有所帮助。 随意提出任何进一步的问题。
答案 1 :(得分:1)
我知道这已经很老了,但我最近对此进行了调查,也许我的解决方案可以帮助某人。当使用更新版本的jQuery(&gt; jQuery 1.6.1)和JQueryUI并尝试使用selectToUISlider时,我遇到了同样的问题。
我发现我的解决方案(使用属性的属性)只是在第98行的selectToUISlider.js脚本中替换
此
currSelect.find('option').eq(ui.value).attr('selected', 'selected');
这个
currSelect.find('option').eq(ui.value).prop('selected', true);
您可以在此答案中找到“为什么”,这有助于我找到此解决方案: https://stackoverflow.com/a/5876747/2285806
您还可以阅读prop()的jQuery API条目以查找更多信息并阅读有关浏览器向后兼容性的重要说明: http://api.jquery.com/prop/