質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1678閲覧

jQueryの絞り込み検索機能について

msssss

総合スコア64

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/03/07 13:49

php

1コード 2<!DOCTYPE html> 3<html lang="ja" dir="ltr"> 4 <head> 5 <meta charset="utf-8"> 6 <title>TEST</title> 7 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 8 </head> 9 <body> 10 11 <p id="test">jQuery練習</p> 12 <ul id="target"> 13 <li>リンゴ100</li> 14 <li>みかん200</li> 15 <li>ブドウ150</li> 16 <li>バナナ250</li> 17 </ul> 18 <input type="text" id="name" value=""> 19 <input type="button" id="test" value="ボタン"> 20 21 22 <p id="result"></p> 23 24 <script type="text/javascript"> 25 $(function(){ 26 27 $("#name").keyup(function(){ 28 var serch = $("#name").val(); 29 $("#target li").each(function(){ 30 var val = $(this).text(); 31 if(val.match(serch)){ 32 $(this).show(); 33 }else { 34 $(this).hide(); 35 } 36 }); 37 }); 38 }); 39 40 </script> 41 42 </body> 43</html>

このコードの時、通常通りリアルタイムで絞り込みが行われるのですが、初めのページにulの要素が表示されてしまいます。
初期ページにulを表示せずに絞り込み機能を利用する方法を教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

最初は表示させないということであれば要素を隠し、あとはmatchした数をカウントしてそれによって動作を振り分ければいいと思います。

jQuery

1$(function(){ 2 var target = $('#target'); 3 target.hide(); 4 $("#name").keyup(function(){ 5 var serch = $("#name").val(); 6 var n = 0; // 追加 7 $("#target li").each(function(){ 8 var val = $(this).text(); 9 if(val.match(serch)){ 10 $(this).show(); 11 n ++; // 追加 12 }else { 13 $(this).hide(); 14 } 15 }); 16 17 // 以下追加 18 if (n) { 19 target.show(); 20 } else { 21 target.hide(); 22 } 23 }); 24});

また、上記 var n = 0; のところを var n = false;n ++ のところを n = true; としても同じ結果になります。

或いは#targetをcssでdisplay: none;としておいて後から表示させる方法もいいかと思います。

投稿2019/03/07 15:52

編集2019/03/07 15:58
cerfweb

総合スコア1899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msssss

2019/03/10 13:59

回答ありがとうございます。 追加で質問させて欲しいのですが、 初期状態で要素を隠すことはできるのですが、valに文字を入力してそれを消すともう一度要素が表示されてしまいます。 良い対策方はありますか?
cerfweb

2019/03/10 16:14

その点は私も気になりましたがやはりそうですよね。 変数searchが空の時に要素を隠し、それ以外の時に$("#target li").each(...);になるよう条件分岐をすることで対応できると思います。
msssss

2019/03/10 23:01

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問