添加并选择一个“;假的“<选项>值设置为a<选择>
Add and select a "fake" <option> value to a <select>
我需要向<select>
添加一个"假的"<option>
,它将显示为所选的,但如果用户想要更改项目,则无法在下拉菜单中选择。
例如:我有一个显示10种水果的页面。每种水果都有它的重量。使用select,我可以按重量过滤水果:
<select id="fruits">
<option>1 kg</option>
<option>2 kg</option>
<option>3 kg</option>
</select>
如果我选择第二个选项(2kg),页面将删除所有有重量的水果!=2kg,并且明显地仅显示重量为==2kg的那些。
现在我需要添加一个"重量范围",例如"显示重量在1到2公斤之间的水果"。我不想在中添加新选项,我只想过滤显示重量在所选范围(1到2kg)之间的水果的表格,并在选择中显示此范围作为所选值。因此,我的CLOSED下拉菜单的值为"1-2kg",但如果我点击选择,我将找不到"1-2kg"选项(这就是我在标题中写"假的"选项的原因)。
简而言之,我只想编辑所选显示的选择文本,而不是他的选项。。。类似于,使用JS
var select = document.getElementById("fruit-select");
select.value = "1-2kg";
显然这不起作用,因为选项"1-2kg"不存在。。
这可能吗?我希望我已经足够清楚了。。提前感谢任何帮助,向致以最良好的问候
解决方案(不适用于Safari…)
多亏了Ricardo,我找到了这个解决方案:http://jsfiddle.net/4suwY/5/
HTML:
<select id="asd">
<option>hello</option>
<option>I'M THE CHOSEN ONE</option>
<option>asd</option>
<option>wer</option>
<option>qwe</option>
</select>
JS:
var sel = document.getElementById("asd");
var optnz = sel.getElementsByTagName("option")[1];
sel.value = optnz.value;
optnz.style.display = "none";
"I’M the CHOSEN ONE"选项显示为选中,但不可点击(甚至在选项列表中不可见)
谢谢大家!
我认为你在这里需要做的是,实际上有一个带有所有这些值的可见选择,1kg、2kg等,然后你有一个隐藏的选择,它将包含这些范围,如1-2kg等(如果范围是固定的)。每次从可见下拉列表中选择某个内容时,都会将隐藏下拉列表中的选定项目更改为所需范围。
听起来您想要包含一系列权重。您可能需要考虑不同类型的输入,例如范围滑块。下面是jQueryUI项目中的一个示例。我并不是建议您使用jQueryUI本身,只是向您展示了实现它的一种方法。
您可以使用<select multiple>
,每当有人选择多个选项时,您就会得到最大值和最小值,并显示该间隔。
试试这个:
http://jsfiddle.net/4suwY/4/
我看到的唯一问题是在选择点击这个功能时丢失值:
$("#asd").mousedown(function () {
$("#asd option[value='1-2kg']").remove().change();
});
- Div根据<选择>菜单
- 如何更改<选择>使用angularJS从控制器获得的值
- 当<选择的选项>重新选择
- 依赖<选择>HTML和JavaScript菜单
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- 如何传递相同页面<选择>值到同一页<f: param>
- 渲染<选项值=“;foo”;选择>在服务器上
- <选择>标签不起作用
- 当我有<选择>下拉列表
- 记住<选择>重新加载页面
- <中的链接;选择>下拉选项
- 映射多个<选择>至<输入>
- <上的applyBindings();选择>正在导致我的subscribe()起火,
- 触发器<输入类型=“;文件“>用angular程序选择文件
- 如何动态生成X数量的新<输入>基于a<选择>(Angular2内)
- 为:gt或:lt选择器设置变量零基数
- 用“<选择></选择>"类型
- JQuery.append的</选择>标记被忽略
- 如何从
- 使用lt(3)选择器为每个元素设置不同的背景色