ウェブサイトに検索バーを実装しようとしています。私はすでにバックエンド処理を正しく機能させており、検索バー用にhtmlとcssを配置しています。あとは、javascriptを取得して検索を実行するだけです。検索バーのHTMLは次のとおりです。
<div id="search_field_container">
<input type="text" name="search_field" id="search_field" maxlength="100" placeholder="Search by item name or #tag" value="Search by item name or #tag" onclick="value=''" />
<button id="search" name="search_button">s</button>
</div>
私がやろうとしているのは、ユーザーがテキストバーがフォーカスされているときにEnterキーを押すか、検索ボタンをクリックしたときに、検索と呼ばれるjavascript関数をトリガーするようにjqueryイベントハンドラーを設定することです。ただし、イベントハンドラーをトリガーさせることは絶対にできないようです。これが私のJavaScriptです:
//Search function
$(document).ready(function(){
console.log("In anonymous function.");
$("#search").on('click', function(event){
alert("In click handler");
search();
});
});
$("#search_field").bind('keyup', function(event){
alert("In keyup handler");
if(event.keyCode == 13){
alert("In enter handler");
search();
}
});
function search(){
alert("Something happened!");
var searchTerm = $("#search_field").val();
alert("You're trying to search for "+searchTerm);
}
現在、テキストバーにカーソルを置いてEnterキーを押すか、検索ボタンを押しても何も起こりません。ページ上の他のすべてのjavascriptは完全に正常に実行されるため、すべての実行を妨げるjavascriptエラーではないことを私は知っています。
検索関数が機能し、少なくともsearch_field
テキスト入力のIDが正しいことはわかっonclick
ています。これは、ボタンにを追加してそれを介して検索を呼び出すと、正しく実行され、テキストフィールドの値が常に正しくエコーされるためです。
検索バーは別のヘッダーファイルにあるので、すべてのページのhtmlに含める必要はありませんが、ファイルをPHPに含めているので、違いはありません。すでに配置されているはずです。ファイルがユーザーに届く前ですら。念のために言っておきますが、私はすでに試してみましたが、.bind
ご覧document.ready
の.on
とおり、匿名ラッパー関数も役に立ちませんでした。
コンソールなどにエラーメッセージが表示されません。ただ黙って失敗します。このサイトにも同様の質問がたくさんあることは知っていますが、私はすでに、見つけたすべての解決策を約12個まで試しました。問題が何であるか、それを修正する方法を誰かが知っている場合、またはこれが失敗する理由を理解するのに役立つ追加のテストでさえ、検索を絞り込むことができる場合は、それをいただければ幸いです。
編集:Huangismは私のコードを使用してこのJSfiddleを作成し、コードが正しく機能することを示したので、私のサイトのコンテキストに何かが原因で機能しなくなったに違いありません。