Bootstrap 3
とJavaScriptを使用して、独自の「ComboBox」を「作成」しています。 Here is the JSFiddle
これまでのところ、
<div class="input-group">
<input type="TextBox" ID="datebox" Class="form-control"></input>
<div class="input-group-btn">
<button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul id="demolist" class="dropdown-menu">
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</div>
</div>
$(document).on('click', '.dropdown-menu li a', function() {
$('#datebox').val($(this).html());
});
このアプローチは、この "ComboBox"をページ上で数回繰り返すまで、うまく機能します。問題は、ANY/ALL '.dropdown-menu li a'
を検索するJQuery関数にあります。
IDdemolistを持つULのonlyに見えるようにJQueryを変更し、そのselectedvalue?
私は次のことを試みましたが成功しませんでした:
'#demolist .dropdown-menu li a'
を試しましたが、関数は起動しません:
$(document).on('click', '#demolist .dropdown-menu li a', function() {
$('#datebox').val($(this).html());
});
Click of#demolistを呼び出してみましたが、#datebox
はではなく#demolistのすべてのリスト項目のHTMLを取得しますアイテムのselectedinnerHTML:
$('#demolist').on('click', function(){
$('#datebox').val($(this).html());
});
実用的なソリューションは次のとおりです。
$('#demolist li a').on('click', function(){
$('#datebox').val($(this).html());
});
[〜#〜] or [〜#〜]
$('#demolist li').on('click', function(){
$('#datebox').val($(this).text());
});
$('#demolist li').on('click', function(){
$('#datebox').val($(this).text());
});
Bootstrapを使用したデザインコード
<div class="dropdown-menu" id="demolist">
<a class="dropdown-item" h ref="#">Cricket</a>
<a class="dropdown-item" href="#">UFC</a>
<a class="dropdown-item" href="#">Football</a>
<a class="dropdown-item" href="#">Basketball</a>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$('#demolist a').on('click', function () {
var txt= ($(this).text());
alert("Your Favourite Sports is "+txt);
});
});
</script>
セレクタは_#demolist.dropdown-menu li a
_になりますidとクラスの間にスペースがないことに注意してください。ただし、より一般的なアプローチをお勧めします。
_<div class="input-group">
<input type="TextBox" Class="form-control datebox"></input>
<div class="input-group-btn">
<button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</div>
$(document).on('click', '.dropdown-menu li a', function() {
$(this).parent().parent().parent().find('.datebox').val($(this).html());
});
_
idではなくクラスを使用し、parent().find()
を使用することで、重複するjsなしで、ページ上に好きなだけこれらを含めることができます
よく働く。
<input type="text" name="cat_q" id="cat_q">
$(document).ready(function(){
$("#btn_cat div a").click(function(){
alert($(this).text());
});
});
試してみましたか
$('#datebox li a').on('click', function(){
//$('#datebox').val($(this).text());
alert($(this).text());
});
わたしにはできる :)
JQueryコードを少し変更して_'#demolist li a'
_にすると、li要素内のテキストではなく、リンク内のテキストが明確に選択されます。これにより、問題を引き起こすことなくサブメニューを使用できます。また、タグを具体的に選択しているため、$(this).text();
を使用してアクセスできます。
_$('#datebox li a').on('click', function(){
//$('#datebox').val($(this).text());
alert($(this).text());
});
_