【发布时间】:2013-02-24 11:40:26
【问题描述】:
我正在为 apx 预先选择最常用的选项。 300 选择元素,并希望区分这些值何时仍处于初始预选/默认状态vs.当用户通过单击表单元素主动选择该值时 (表明他们做出了一个积极的决定,将其设置为该值)。
为了做到这一点,我为每个预选的值创建了一对选项(值略有不同,即value="50" 与value="50_Default"),当单击该元素时,我想隐藏预选选项并显示常规选项。我想将类用作选择器,以便该函数适用于所有 Select 元素,而不管它们的值如何。
我无法使 jQuery 的显示/隐藏方法适应这种情况,和/或修改我在 SO 帖子上看到的类似问题的答案,这些问题需要指定函数中的每个选项(即 jQuery disable SELECT options based on Radio selected (Need support for all browsers).我确实找到了一种按类显示/隐藏选择选项的解决方案,但是代码对我来说有点太复杂了,无法自己适应,所以如果这是最好的方法,我会很感激修改它https://stackoverflow.com/a/5924965/1056713
我正在尝试按照这些思路做一些事情(这些功能都不起作用)
JS
$(".default_set").click(function(){
$(this).children("select option .default_field").hide();
$(this).children("select option .selected_field").show();
});
// Store the hidden options (necessary in IE)
$(".hidden_field").hide();
$(this).parent("select option .default_field").removeAttr("selected");
$(this).parent("select option .default_field").hide();
$(this).parent("select option .selected_field").show();
HTML
<select name=min_jeans class="default_set">
<option value=0>$0</option>
<option value="50_Default" class="default_field" selected=selected>$50</option>
<option value="50" class="selected_field" style="display:none">$50</option>
<option value=100>$100</option>
<option value=150>$150</option>
<option class="hidden_field" value="hidden_field" style="display:none;"></option>
</select>
这是我得到的最接近的(在@kasdega 的帮助下)http://jsfiddle.net/chayacooper/VN2Su/13/,使用值而不是类。它也不能正常工作 - 在单击元素之前,小提琴不显示默认值,当我在计算机上运行代码时,我遇到了相反的问题 - 它在单击元素之前显示默认值,但没有应该隐藏的时候不要隐藏它。
【问题讨论】:
-
我不明白你的实现。为什么不默认禁用
<select>字段并告知$50 是默认值。如果他们想改变它,他们会点击一些东西(比如一个按钮/复选框,上面写着“我想使用我自己的价值”),这会启用下拉菜单并允许用户选择价格? -
我希望这对用户来说是无缝的。从他们的角度来看,他们看不到值之间的差异,但它允许我为值分配不同的权重,等等。
标签: jquery select show-hide option