ユーザー入力後に結果を表示するJavaScript検索バー

カイ

ローカルファイルのリストを表示するWebページがあり、ファイルのリストを調べて最初の一致を強調表示する検索バーがあります。

ただし、ユーザーがファイル名を検索した場合にのみファイルを表示するにはどうすればよいですか。したがって、すべてのファイルを表示するのではなく、検索条件に一致するファイルのみを返すようにします。

PHP、JavaScript、jQueryは、誰かがその分野で助けてくれるなら、ここでは完全にオプションです。

testexec.php:

<?php
$path = '/var/www/html/'; //get list of files
$files = scandir($path);

//display the links

foreach($files as $file) {
     if($file != '.' && $file != '..') {
        echo '<div><a href="readfile.php?file='.urlencode($file).'"> '.$file.'</a></div>';
     }
}

?>

readfile.php:

<?php
 // PHP script to allow the file to be downloaded
$filename = $_GET['file'];

if (file_exists($filename)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; 
filename="'.basename($filename).'"');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  readfile($filename);
  exit;
 }
 ?>
    //検索
     バー

     関数のJavaScriptFindNext (){ var str = document.getElementById( "livesearch")。value; 
            if(str == ""){ 
                alert( "検索するテキストを入力してください!"); 
                戻る; 
            }
     サポートされている変数= false; 
            var found = false; 
            if(window.find){// Firefox、Google Chrome、Safariが
                サポートされています= true; 
                    //一部のコンテンツが選択されている場合、検索の開始位置は
                    //選択の終了位置になり
                ますfound = window.find(str); 
            } そうしないと {
                if(document.selection && document.selection.createRange){// Internet Explorer、バージョン10.5より前のOpera 
                    var textRange = document.selection.createRange(); 
                    if(textRange.findText){//
                        サポートされているInternetExplorer = true; 
                            //一部のコンテンツが選択されている場合、検索の開始位置は
                            //選択の開始位置の後の位置になります
                        if(textRange.text.length> 0){ 
                            textRange.collapse(true); 
                            textRange.move( "文字"、1); 
                        }

                        found = textRange.findText(str); 
                        if(found){ 
                            textRange.select(); 
                        } 
                    } 
                } 
            } 

            if(supported){ 
                if(!found){ 
                    alert( "次のテキストが見つかりませんでした:\ n" + str); 
                } 
            } 
            else { 
                alert( "お使いのブラウザはこの例をサポートしていません!"); 
            } 
        }
    
plonknimbuzz

これは本当に簡単です。イベントkeyupといくつかのコード修正を使用する必要があります

index.php

<input type="text" id="searchbar" placeholder="search file"> <span id="loading" style="display:none;">loading</span>
<div id="result"></div>
<script src="../../vendor/jquery/jquery-3.2.1.min.js"></script>
<script>
    $(function(){
        $('#searchbar').keyup(function(){//event after user release keyboard
            var val = $(this).val();
            if(val.length >= 2){//min 2 words to start find
                $.ajax({
                    url: 'search.php',
                    type: 'POST',
                    dataType: 'json', //we use json
                    data: {keyword: val},
                    beforeSend: function(){
                        $('#loading').show();
                    },
                    success: function(d){
                        if(d.ok==1){
                            $('#result').html(d.list);
                        }else{
                            alert(d.msg);
                        }
                        $('#loading').hide();
                    },
                    error: function(d){
                        alert('error');
                        $('#loading').hide();
                    }
                });
            }
        })
    });
</script>

search.php

<?php
$path = 'C:/xampp/htdocs/';
$keyword = isset($_POST['keyword']) ? $_POST['keyword'] : '';
$scan = scandir($path);
$result = array('ok'=>0); //prepare output cz we will use json instead text/html
if($scan !== false){
    $result['ok']=1;
    $list = array();
    foreach($scan as $file){
        if(is_file($path.$file)){ //only file
            if(preg_match('/'.$keyword.'/', $file)) //is file containts keyword?
            $list[] = '<div><a href="readfile.php?file='.$file.'">'.$file.'</a></div>';
        }
    }
    $result['list'] = count($list) == 0 ? 'no file match': $list;
}else
    $result['msg'] = "failed open dir";

echo json_encode($result);

readfile.php

<?php
 // PHP script to allow the file to be downloaded
$filename = $_GET['file'];
$path = 'C:/xampp/htdocs/';
$fullPath = $path.$filename; //you need this
if (file_exists($fullPath)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename="'.basename($filename).'"');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . filesize($fullPath));
  readfile($fullPath);
  exit;
 }
 ?>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ユーザーが検索入力フィールドと検索結果の外側をクリックしたときに、検索入力フィールドと検索結果を非表示にします

分類Dev

検索語を入力して[検索]をクリックすると、ページはユーザーをトップに戻し、結果を表示するには下にスクロールする必要があります

分類Dev

ユーザー入力に基づいてJavaScriptで配列を検索する

分類Dev

プロンプトの後にユーザー入力を表示するjavascript

分類Dev

'grep'コマンドが検索結果でユーザー入力単語を強調表示しない

分類Dev

axios.postは検索バーにユーザー入力を表示しています

分類Dev

ユーザーが検索バーに入力したときにtextarea値を表示/非表示にするにはどうすればよいですか?

分類Dev

ユーザーが検索バーに重複する番号を入力できないようにする

分類Dev

jsでユーザー入力を保存し、具体的に検索したときに情報を表示する方法

分類Dev

PHP SQL:検索クエリ結果をユーザー入力順序で並べ替える

分類Dev

辞書でユーザー入力を検索する

分類Dev

検索バーからの検索結果を入力するためのテーブルが必要

分類Dev

ユーザー入力に基づいて構造化配列を検索する

分類Dev

ユーザーが入力した数値を送信して、数値を追加し、結果をユーザーに表示するFirebase関数を実行します

分類Dev

Wordpressの検索フィールドでドットを使用してユーザー検索したときにゼロの結果を表示する方法

分類Dev

Twitterユーザーを検索し、結果を自分のページに表示します

分類Dev

ユーザー入力後にテキストを非表示にする

分類Dev

Kenticoの検索結果をユーザーグループで制限する

分類Dev

一度に5つの結果のみを検索バーに表示する

分類Dev

ユーザーが「検索」ボタンをクリックした後、検索結果をビューに表示するにはどうすればよいですか?

分類Dev

テーブル内の同じページにユーザーの検索結果を表示するにはどうすればよいですか?

分類Dev

javascriptでユーザー入力を検証する方法

分類Dev

JavaScript:配列の数でユーザー入力を検索

分類Dev

検索結果とともにユーザー入力を表示していますが、テキストボックスにデフォルトのメッセージが表示されていますが、それを削除するにはどうすればよいですか?

分類Dev

ユーザーが入力した 2 つの数値を減算し、移動して結果を表示する

分類Dev

検索入力と結果を1つの入力と1つの結果にマージします

分類Dev

イオン検索バーでユーザーが入力したテキストを取得する方法

分類Dev

Javascript-ユーザー入力配列を表示する関数

分類Dev

ユーザーが入力した日付をJSONmm / dd / yyyy形式で変換し、結果として表示する

Related 関連記事

  1. 1

    ユーザーが検索入力フィールドと検索結果の外側をクリックしたときに、検索入力フィールドと検索結果を非表示にします

  2. 2

    検索語を入力して[検索]をクリックすると、ページはユーザーをトップに戻し、結果を表示するには下にスクロールする必要があります

  3. 3

    ユーザー入力に基づいてJavaScriptで配列を検索する

  4. 4

    プロンプトの後にユーザー入力を表示するjavascript

  5. 5

    'grep'コマンドが検索結果でユーザー入力単語を強調表示しない

  6. 6

    axios.postは検索バーにユーザー入力を表示しています

  7. 7

    ユーザーが検索バーに入力したときにtextarea値を表示/非表示にするにはどうすればよいですか?

  8. 8

    ユーザーが検索バーに重複する番号を入力できないようにする

  9. 9

    jsでユーザー入力を保存し、具体的に検索したときに情報を表示する方法

  10. 10

    PHP SQL:検索クエリ結果をユーザー入力順序で並べ替える

  11. 11

    辞書でユーザー入力を検索する

  12. 12

    検索バーからの検索結果を入力するためのテーブルが必要

  13. 13

    ユーザー入力に基づいて構造化配列を検索する

  14. 14

    ユーザーが入力した数値を送信して、数値を追加し、結果をユーザーに表示するFirebase関数を実行します

  15. 15

    Wordpressの検索フィールドでドットを使用してユーザー検索したときにゼロの結果を表示する方法

  16. 16

    Twitterユーザーを検索し、結果を自分のページに表示します

  17. 17

    ユーザー入力後にテキストを非表示にする

  18. 18

    Kenticoの検索結果をユーザーグループで制限する

  19. 19

    一度に5つの結果のみを検索バーに表示する

  20. 20

    ユーザーが「検索」ボタンをクリックした後、検索結果をビューに表示するにはどうすればよいですか?

  21. 21

    テーブル内の同じページにユーザーの検索結果を表示するにはどうすればよいですか?

  22. 22

    javascriptでユーザー入力を検証する方法

  23. 23

    JavaScript:配列の数でユーザー入力を検索

  24. 24

    検索結果とともにユーザー入力を表示していますが、テキストボックスにデフォルトのメッセージが表示されていますが、それを削除するにはどうすればよいですか?

  25. 25

    ユーザーが入力した 2 つの数値を減算し、移動して結果を表示する

  26. 26

    検索入力と結果を1つの入力と1つの結果にマージします

  27. 27

    イオン検索バーでユーザーが入力したテキストを取得する方法

  28. 28

    Javascript-ユーザー入力配列を表示する関数

  29. 29

    ユーザーが入力した日付をJSONmm / dd / yyyy形式で変換し、結果として表示する

ホットタグ

アーカイブ