リストを調べて以下の結果を返す入力を入力しようとしています。
これは私のリストです
<ul id="lista1" class="list-group">
<li id = "1" class="list-group-item d-flex justify-content-between align-items-center">
<p id = "elem1"> Carne </p>
<p id = "elem2"> Pesce </p>
<p id = "elem3"> Verdure </p>
</li>
</ul>
オンラインで検索してみたところ、この機能は見つかりましたが、現在のリストを変更したくないので採用できませんが、以下は検索結果のみを再現しています。
$(document).ready(function(){
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#lista1 p").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1).indexOf()
});
});
});
.filter()
を使用して、値を含まないすべての要素を選択してから非表示にする必要があります。
$("#myInput").on("keyup", function() {
var value = this.value.toLowerCase().trim();
$("#lista1 p").show().filter(function() {
return $(this).text().toLowerCase().trim().indexOf(value) == -1;
}).hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="myInput">
<ul id="lista1" class="list-group">
<li id = "1" class="list-group-item d-flex justify-content-between align-items-center">
<p id = "elem1"> Carne </p>
<p id = "elem2"> Pesce </p>
<p id = "elem3"> Verdure </p>
</li>
</ul>
以下のコードスニペットを試してみてください:fiddle Link :
HTMLパート:
<input class="form-control" id="txtSearch" type="text">
<li id = "1" class="list-group-item d-flex justify-content-between align-items-center">
<p class="list-group-item" > Carne </p>
<p class="list-group-item" > Pesce </p>
<p class="list-group-item" > Verdure </p>
</li>
Jqueryパート:
$("#txtSearch").on('keyup', function() {
var search = $(this).val().toLowerCase();
//Go through each list item and hide if not match search
$(".list-group-item").each(function() {
if ($(this).html().toLowerCase().indexOf(search) != -1) {
$(this).show();
}
else {
$(this).hide();
}
});
$(".list-group-item:visible").each(function(index) {
if(index == 0){
$(this).css("border-top-left-radius", "10px");
$(this).css("border-top-right-radius", "10px");
}
if(index == $(".list-group-item:visible").length - 1){
$(this).css("border-bottom-left-radius", "10px");
$(this).css("border-bottom-right-radius", "10px");
}
});
});
以下のコードでは、filter
またはfor each
を使用していません。それを見てください(あなたはそれをチェックまたは変更することができます オンライン )。 このトリックは多くの場合に役立ちます:
<input type="text" id="myInput"/>
<ul id="lista1" class="list-group">
<li id = "1" class="list-group-item d-flex justify-content-between align-items-center">
<p id = "elem1"> Carne </p>
<p id = "elem2"> Pesce </p>
<p id = "elem3"> Verdure </p>
</li>
</ul>
そしてそのjs:
$(document).ready(function(){
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#lista1 p").css("display", function() {
return this.innerText.toLowerCase().indexOf(value) > -1 ? "":"none"
});
});
});
すみません!携帯電話で入力していますが、stackoverflow
エディターのコードツールにアクセスできません。あなたは上からそれをテストすることができます。