现在,
我有以下jquery,css和html代码,它按我想要的方式工作。 Where如果用户选择下拉列表,则会显示某个文本框。但是我怎样才能在轨道上轻松完成?
HTML
<form>
<select id="sel">
<option value="">- select -</option>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
<option value="option4">Option 4</option>
<option value="other">Other</option>
</select>
<label id="label1" for="option1">Text box label 1
<input type="text" id="option1" />
</label>
<label id="label2" for="option2">Text box label 2
<input type="text" id="option2" />
</label>
<label id="label3" for="option3">Text box label 3
<input type="text" id="option3" />
</label>
<label id="label4" for="option4">Text box label 4
<input type="text" id="option4" />
</label>
<label id="label5" for="option5">Other
<input type="text" id="option5" />
</label>
</form>
CSS
label {
display:block;
}
JQUERY
$(function() {
//This hides all initial textboxes
$('label').hide();
$('#sel').change(function() {
//This saves some time by caching the jquery value
var val = $(this).val();
//this hides any boxes that the previous selection might have left open
$('label').hide();
//This just opens the ones we want based off the selection
switch (val){
case 'option1':
$('#label1').show();
break;
case 'option2':
$('#label2').show();
break;
case 'option3':
$('#label1').show();
break;
}
});
});
Rails代码
<%= f.select(:title, ["Select an option","Option 1", "Option 2", "Option 3"])%>
但我不确定如何显示文本框。选择选项我这里只有3。但在我的应用程序中,将会有10-15。
由于
答案 0 :(得分:1)
您应该在选项和HTML ID之间使用约定来显示。
如果您的选项具有静态值,则匹配现有标签,您可以执行以下操作:
$(function() {
$('label').hide();
$('#sel').change(function() {
var val = $(this).val();
$('label').hide();
$('#label'+val).show():
});
});
使用此功能,您不必处理每个选项,只需添加相应的选项/标签ID。
答案 1 :(得分:0)
尝试获取下拉列表的selectedIndex属性,而不是对ID进行硬编码;索引从0开始(零)
var i = getElementById('sel').selectedIndex ;
$('#label'+i).show();
$('#option'+i).show();
这是可扩展的,因此如果您将来添加选项,它将起作用。