我有一个由多项选择功能制成的下拉菜单。
我也有一些表单输入字段,其中包含一些div,标签和输入标签。
我想在选择菜单中选择特定项目时显示特定表单字段。
可以说,我有
<div class="col-md-6 col-12">
<div class="form-group">
<label>Identity Proofs</label>
<select class="form-control select2" multiple="multiple" data-placeholder="Select at least one valid Identity Proof"
style="width: 100%;" id="idproof">
<option value="aadhar">Aadhar Card</option>
<option value="passport">Indian Passport</option>
<option value="voter-ID">Voter ID Card</option>
<option value="pan">PAN Card</option>
<option value="dl">Driving License</option>
<option value="ration">Ration Card</option>
<option value="birth">Birth Certificate</option>
<option value="scst">Backward classes Certificate</option>
<option value="udid">Unique Disability ID (UDID) Card</option>
<option value="army">Army License</option>
<option value="others">Others</option>
</select>
</div>
</div>
我可以从上面的菜单中选择倍数值。
然后,我有11个或想要切换可见性的字段。
当我选择“ aadhar”时,具有id =“ id1”的div应该可见。
同样
当我选择“护照”时,具有id =“ id2”的div应该可见。
同样
当我同时选择“ voter-ID”和“ pan”时,具有id =“ id3”和id =“ id4”的div应该可见。
我已经尝试了很多if else和else if语句,它们带有jQuery的hide()和show()函数。每种方法都适用于“单选”,但不适用于多项选择。这个问题让我感到非常沮丧。
然后我尝试了FOR循环(我不太了解js或jQuery)。但这仍然无济于事。下面是代码
$("#idproof").on('change',function(){
var arrayid = ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10","id11"];
var arrayname = ["aadhar","passport","voter-ID","pan","dl","ration","birth","scst","udid","army","others"];
var i,j;
for (j = 0; j <= 10; j++) {
if($("#idproof").val()=="arrayname[i]"){
$("#arrayid[i]").hide();
}
}
for (i = 0; i <= 10; i++) {
if($("#idproof").val()=="arrayname[i]"){
$("#arrayid[i]").show();
}
}
});
我什至调整了语法(认为这是错误的),但没有帮助。我什至在div中尝试了“ display:none”,然后通过jQuery对其进行了更改,但仍然没有希望。
我最后的尝试是:
$("#idproof").on('change',function(){
$("#id1","#id2","#id3","#id4","#id5","#id6","#id7","#id8","#id9","#id10","#id11").hide()
if( !($("#idproof").val()=="aadhar")){
$("#id1").hide()
}
else{
$("#id1").show()
}
if( !($("#idproof").val()=="passport")){
$("#id2").hide()
}
else{
$("#id2").show()
}
if( !($("#idproof").val()=="voter-ID")){
$("#id3").hide()
}
else{
$("#id3").show()
}
if( !($("#idproof").val()=="pan")){
$("#id4").hide()
}
else{
$("#id4").show()
}
if( !($("#idproof").val()=="dl")){
$("#id5").hide()
}
else{
$("#id5").show()
}
if( !($("#idproof").val()=="ration")){
$("#id6").hide()
}
else{
$("#id6").show()
}
if( !($("#idproof").val()=="birth")){
$("#id7").hide()
}
else{
$("#id7").show()
}
if( !($("#idproof").val()=="scst")){
$("#id8").hide()
}
else{
$("#id8").show()
}
if( !($("#idproof").val()=="udid")){
$("#id9").hide()
}
else{
$("#id9").show()
}
if( !($("#idproof").val()=="army")){
$("#id10").hide()
}
else{
$("#id10").show()
}
if( !($("#idproof").val()=="others")){
$("#id11").hide()
}
else{
$("#id11").show()
}
});
以下代码适用于单选(但仍然存在错误)
$("#idproof").on('change',function(){ $("#id1","#id2","#id3","#id4","#id5","#id6","#id7","#id8","#id9","#id10","#id11").hide() if( !($("#idproof").val()=="aadhar")){ $("#id1").hide() } else{ $("#id1").show() } if( !($("#idproof").val()=="passport")){ $("#id2").hide() } else{ $("#id2").show() } if( !($("#idproof").val()=="voter-ID")){ $("#id3").hide() } else{ $("#id3").show() } if( !($("#idproof").val()=="pan")){ $("#id4").hide() } else{ $("#id4").show() } if( !($("#idproof").val()=="dl")){ $("#id5").hide() } else{ $("#id5").show() } if( !($("#idproof").val()=="ration")){ $("#id6").hide() } else{ $("#id6").show() } if( !($("#idproof").val()=="birth")){ $("#id7").hide() } else{ $("#id7").show() } if( !($("#idproof").val()=="scst")){ $("#id8").hide() } else{ $("#id8").show() } if( !($("#idproof").val()=="udid")){ $("#id9").hide() } else{ $("#id9").show() } if( !($("#idproof").val()=="army")){ $("#id10").hide() } else{ $("#id10").show() } if( !($("#idproof").val()=="others")){ $("#id11").hide() } else{ $("#id11").show() } });
最佳答案
下面的示例按您的意愿工作。它将单击事件添加到选择中的选项,然后循环浏览每个选项,以检查是否已选择它。然后,使用索引我们可以显示或隐藏关联的div
。
我添加了一个非常讨厌的CSS来将所有关联的divs隐藏起来-不要这样!将类添加到div中,因为此CSS规则不够具体,无法在演示外部使用。
有更优雅的方法,理想情况下,为每个选项使用属性,为关联的div提供名称。例如,您可以将option
value
用作关联的div的id
。这将使编码更简单。
让我知道这是否不是您想要的。
演示版
// Add click event to options
$("select option").click( function() {
// Create index value
i = 1;
// Cycle through each of the options
$(this).closest("select").children("option").each( function() {
// Check if option is selected
if ( $(this).is(':selected') ) {
// If it is, show associated div
$("#id" + i).show();
} else {
// If it is not selected, hide associated div
$("#id" + i).hide();
}
// Increase index
i = i + 1;
});
});
[id^='id'] {
display: none;
}
#idproof {
display: inherit;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-6 col-12">
<div class="form-group">
<label>Identity Proofs</label>
<select class="form-control select2" multiple="multiple" data-placeholder="Select at least one valid Identity Proof"
style="width: 100%;" id="idproof">
<option value="aadhar">Aadhar Card</option>
<option value="passport">Indian Passport</option>
<option value="voter-ID">Voter ID Card</option>
<option value="pan">PAN Card</option>
<option value="dl">Driving License</option>
<option value="ration">Ration Card</option>
<option value="birth">Birth Certificate</option>
<option value="scst">Backward classes Certificate</option>
<option value="udid">Unique Disability ID (UDID) Card</option>
<option value="army">Army License</option>
<option value="others">Others</option>
</select>
</div>
</div>
<div id="id1">Aadhar Card #id1</div>
<div id="id2">Indian Passport #id2</div>
<div id="id3">Voter ID Card #id3</div>
<div id="id4">PAN Card #id4</div>
<div id="id5">Driving License #id5</div>
<div id="id6">Ration Card #id6</div>
<div id="id7">Birth Certificate #id7</div>
<div id="id8">Backward classes Certificate #id8</div>
<div id="id9">Unique Disability ID #id9</div>
<div id="id10">Army License #id10</div>
<div id="id11">Others #id11</div>