简体   繁体   中英

Multilevel dropdown in a form: Javascript, Bootstrap

I have a form in which a field named 'Protein Change' has a multi-level dropdown, if a user clicks on an option in the dropdown(eg, CNV->Deletion), the option should be selected and shown in the field. However, currently it's not being able to do so.

I have used bootstrap and Javascript. Can I use onclickevent() for the click event to happen and show the data corresponding to it?

 $(".btn-group, .dropdown").hover( function () { $('>.dropdown-menu', this).stop(true, true).fadeIn("fast"); $(this).addClass('open'); }, function () { $('>.dropdown-menu', this).stop(true, true).fadeOut("fast"); $(this).removeClass('open'); });
 .dropdown-submenu { position: relative; } .dropdown-submenu> a:after { content: ">"; float: right; } .dropdown-submenu>.dropdown-menu { top: 0; left: 100%; margin-top: 0px; margin-left: 0px; } .dropdown-submenu:hover>.dropdown-menu { display: block; }
 <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> <script language="JavaScript" src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script> <link href="css/dialog.css" rel="stylesheet" media="screen" /> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> </head> <body> <div class="container-fluid" style="padding-left: 20px;"> <form class="form-inline"> <fieldset disabled> <div class="form-row"> <select class="fields inputstl form-control form-control col-md-12" onchange="changevar(this,event);"> <option selected="selected">TumorType</option> </select> </div> </fieldset> <div class="form-row"> <select id="selecttumor" required class="values inputstl form-control mx-sm-3" value="Bladder Urothelial Carcinoma" type="search" style="width: 200px;"> <option value="4">Bladder Urothelial Carcinoma</option> <option value="5">Breast invasive carcinoma</option> <option value="6">Colon adenocarcinoma and Rectum adenocarcinoma</option> </select> </div> <fieldset disabled> <div class="form-row"> <select class="fields inputstl form-control form-control col-md-12" onchange="changevar(this,event);"> <option selected="selected">Gene</option> </select> </div> </fieldset> <div class="form-row"> <input id="selectGene" value="AGXT" onfocus="addSysnomousInput(this,event);" required class="values inputstl form-control mx-sm-3" type="search"> <span id="selectGene" class="form-control-clear glyphicon glyphicon-remove form-control-feedback hidden"></span> </div> <div class="form-row"> <div class="col-lg-12"> <div class="btn-group"> <a id="dLabel" role="button" data-toggle="dropdown" class="btn btn-outline-secondary dropdown-toggle" href=""> Protien Search </a> <ul class="selectPkeyVkey dropdown-menu" role="menu" aria-labelledby="dropdownMenu"> <li value ="1"><a class="dropdown-item">Protein Search</a></li> <li value="2"><a class="dropdown-item">Nucleotide Search</a></li> <li><a class="dropdown-item">Group Variants</a></li> <li class="dropdown-divider"></li> <li class="dropdown-submenu"> <a class="dropdown-item" tabindex="-1" href="#"> CNV </a> <ul class="dropdown-menu"> <li value="3"><a class="dropdown-item" tabindex="-1">Copy Number Gain</a></li> <li value="3"><a class="dropdown-item">Copy Number Loss</a></li> <li value ="3"><a class="dropdown-item">Deletion</a></li> <li value ="3"><a class="dropdown-item">Diplotype</a></li> <li value ="3"><a class="dropdown-item">Distinct Chromosome</a></li> <li value ="3"><a class="dropdown-item">Duplication</a></li> </ul> </li> </ul> </div> </div> </div> <fieldset disabled> <div class="form-row"> <select class="fields inputstl form-control form-control col-md-12" onchange="changevar(this,event);" style="margin:15px;"> <option selected="selected">Variant</option> </select> </div> </fieldset> <div class="form-row" style="margin: 10px"> <input id="selectVarinput" value="Gly170Arg" onfocus="addSysnomousInput(this,event);" required class="form-control mx-sm-3" type="search"> <span id="selectVarinput" class="form-control-clear glyphicon glyphicon-remove form-control-feedback hidden"></span> </div> <button id="searchButton" class="searchclass btn btn-primary mx-sm-3" onclick="collectLogic(this,event);return false;">Search</button> </form> </div> </body> </html>

Dropdown menu is not behaving like select so you need to manually change text of #dLabel .

In jQuery you can do something like:

$(".dropdown-item").click(function() {
  let text = $(this).text();
  $("#dLabel").text(text);
});

Full example here https://jsfiddle.net/pg8wsx16/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM