selectToUISlider设置值不正确

时间:2012-05-28 11:28:06

标签: jquery-ui

我有一个标准<select>..</select>元素,我有一个由selectToUISlider()创建的滑块 问题是当滑块移动时,下拉列表中的选项不会改变。此外,当移动滑块时,它会在每个元素上设置selected="selected",以便在提交表单时,多个值将被POST,模拟多个选择选项。

我花了很多年时间试图找到底线,但没有运气。有没有人有任何想法?

2 个答案:

答案 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/