[英]Displaying a div based on a dropdown selection
我有一部分这样的jsp代码:
<div>
<label>Choose the type of procedure you want :</label><select id="proc-type">
<option value="with-param">With parameters</option>
<option value="without-param">Without parameters</option>
</select>
</div>
现在,如果用户选择带参数,则应显示以下div:
<div class="drop" id="drop">
<label> Select Procedure (without parameters) : </label> <select id="combobox" name="combobox">
<option>proc 1</option>
<option>proc 2</option>
</select>
并且,如果没有参数,则应显示
<div class="drop" id="drop">
<label> Select Procedure (without parameters) : </label> <select id="combobox" name="combobox">
<option>proc 3</option>
<option>proc 4</option>
</select>
<label>Parameter : </label> <textarea rows=1 cols=30 ></textarea> <br>
<label>Parameter : </label> <textarea rows=1 cols=30 ></textarea> <br>
</div>
我已经尝试过的jQuery代码为:
$(document).ready(function () {
$(".dropdown").hide();
$(".drop").hide();
$("#proc-type").change( function(){
var opt="";
opt= $parseInt($("select option: selected").val());
if(opt == "with-param"){
("#dropdown").show(700);
}
else {
("#drop").show(700);
}
});
});
但这似乎不起作用,有人可以建议我怎么做吗?
标准的javascript函数是parseInt
,而不是$parseInt
。 而且,据我了解,您不需要它val()
已经返回了字符串值。
另外,要从<select>
获取值,可以直接在其上调用val()
。 因此,您的行变为:
opt = $(this).val();
由于this
成为发生事件的元素-选择本身。
最后,您可能希望在显示正确的div后hide()
另一个div,以防用户改变主意。
好吧,首先,ID应该始终是唯一的(这就是为什么将其称为id)的原因。 因此,请确保您对所有元素都有唯一的ID。
其次,我在您的代码中找不到ID为下拉列表的任何元素(您是否错过了?)
无论如何 ,
解决方案,
的HTML
<div class="drop" id="drop1"> //<---here
<label> Select Procedure (without parameters) : </label>
<select id="combobox1" name="combobox">
<option>proc 1</option>
<option>proc 2</option>
</select>
</div>
<div class="drop" id="drop2"> //<---here
<label> Select Procedure (without parameters) : </label>
<select id="combobox2" name="combobox">
<option>proc 3</option>
<option>proc 4</option>
</select>
<label>Parameter : </label> <textarea rows=1 cols=30 ></textarea> <br>
<label>Parameter : </label> <textarea rows=1 cols=30 ></textarea> <br>
</div>
jQuery的
$(document).ready(function () {
$(".drop").hide();
$("#proc-type").change( function(){
if(this.value == "with-param"){
$("#drop1").show(700);
$("#drop2").hide();
}
else {
$("#drop2").show(700);
$("#drop1").hide();
}
});
});
这样,多个元素实例不能具有相同的ID,在单个页面中,每个元素的ID应该是唯一的。 我建议你这样改变:
<div class='wrapperdiv'>
<div class="drop with-param">
<label> Select Procedure (with parameters) : </label>
<select id="combobox1" name="combobox1">
<option>proc 1</option>
<option>proc 2</option>
</select>
</div>
<div class="drop without-param">
<label> Select Procedure (without parameters) : </label>
<select id="combobox1" name="combobox1">
<option>proc 1</option>
<option>proc 2</option>
</select>
</div>
</div>
在CSS中隐藏div:
.drop{ display:none; }
所以你的jQuery应该是这样的:
$('#proc-type').on('change', function(){
var div2show = this.value;
if(div2show == 'with-param'){
$('.with-param').show();
$('.without-param').hide();
}else{
$('.with-param').hide();
$('.without-param').show();
}
}).change();
或这个(如果两个div都包含在某个包装div中) :
$('#proc-type').on('change', function(){
var div2show = this.value;
$('.'+div2show).show().siblings('div').hide();
}).change();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.