2016-09-28 5 views
0

のparamsカスタムを使用したURL文字列に検索クエリを渡す必要があります本当にタグを使ったフィルタリングシステムです適切に、彼らはクエリURLを照会何の結果を参照するには、ユーザーのためのためには、私はこのようになりますシンプルな検索フォームを持っている

#Kは同様に重要ですhttp://www.theurltosearch.com/#/Kboxesこのような何かを見て持ってその方法Kは、キーワードの略タグシステム結果を返します。マルチタームの

は、URLがカンマで区切られた、このように見えることがある照会http://www.theurltosearch.com/#/Kboxes,Kmoving

誰かが検索を使用した場合、彼らは今http://www.theurltosearch.com/#/K%22more%20stuff%22

のような文字列のクエリに何かを入力すると、ユーザーは、結果を取得する必要がありますURLに移動して、実際にクエリに一致する結果を実際に表示することはありません。

上記の結果を返すためにURL文字列を操作するにはどうすればよいですか?

私の実際の試み

<script type="text/javascript"> 
    window.onload = function(){ 
     var form = document.getElementById("reports-search"); 
     form.onsubmit = function(){ 
     var searchText = document.getElementById("search-reports"); 
     window.location = "http://www.urltosearch.com/#/K" + searchText.value; 
     return false; 
     }; 
    }; 
</script> 

<form id="reports-search" method="get"> 
<input class="search-box" id="search-reports" type="text" value="search all reports" /><!--search term was analysis--> 
<input type="submit" name="search" /> 
</form> 

誰かがあれば、単一のキーワードを検索するが、されていない場合、この試みは正常に動作します戻り

http://www.urltosearch.com/#/Kanalysis 

と表示し、解析タグ

ですべての結果ユーザーが複数または文字列を検索しています

JSを変更して他のオプションを実現するにはどうすればよいですか?

+0

カスタムURLスキームを使用してのGETのparamsのために使用される標準的なものをeschewingしているので、あなたはURLを自分で形成する必要があります。入力の例と必要なURLが含まれるように質問を編集する必要があります。番号(#)がフォームから抽出されるかどうかは不明です。 – enhzflep

+0

@enhzflepありがとう私は周りに遊んで、私の試行を更新し、私が以前よりも近くにいる、あなたが見てみることができますか? – gwar9

+0

問題ありません:)それは良いです。しかし、ちょっと、入力はどのように見えるのですか?私はそれだけでスペース区切りの単語の束、またはスペースやカンマ区切りです。また、 'http://www.theurltosearch.com /#/ K%22more%20stuff%22'の入力例、または' 'より多くのstuff ''の検索結果urlだけですか? – enhzflep

答えて

1

さて、ここにdog'n'birdの実装(ラフ、ラフ、安く、安い)があります。

パイプ文字で区切られた複数の語句を入力することを許可しました|ユーザーが「通常の」キーワードで受け取るのと基本的に同じ形式でURLを入力できるようにするには、入力されたテキストを最初にチェックしたい場合は、それを変更せずにそのまま通過させます。

すべて検索語句は" "で、複数語句であるかどうかにかかわらずラップされています。の後に空白文字の文字列を検索すると、1語の単語と複数の単語を区別することができます。string.trimが先頭/末尾のスペースを削除しました。たとえば、

if (trimmedTerm.indexOf(' ') == -1) 
{ 
    // single word search term 
} 
else 
{ 
    // multi-word search term here 
} 

とにかく、ここではデモがあり、洞察を与えてくれることを願っています。

function byId(id){return document.getElementById(id)} 
 
// useful for HtmlCollection, NodeList, String types 
 
function forEach(array, callback, scope){for (var i=0,n=array.length; i<n; i++)callback.call(scope, array[i], i, array);} // passes back stuff we need 
 

 

 
window.addEventListener('load', onDocLoaded, false); 
 

 
function onDocLoaded(evt) 
 
{ 
 
\t byId('goBtn').addEventListener('click', onGoBtnClicked); 
 
} 
 

 
function onGoBtnClicked(evt) 
 
{ 
 
\t // get the user input 
 
\t var inputString = byId('userInput').value; 
 
\t // split it into an array of terms, based on the | char 
 
\t var searchTerms = inputString.split('|'); 
 
\t // init the result 
 
\t var result =''; 
 
\t // for each element in the array of search terms, call the function to trim wrap with "" and encode 
 
\t forEach(searchTerms, addCurTermToResult); 
 
\t // update the output display 
 
\t byId('output').textContent = 'http://www.theurltosearch.com/#/' + result; 
 

 
\t function addCurTermToResult(curTerm, index) 
 
\t { 
 
\t \t if (index != 0)      // put a comma before all terms except the first one 
 
\t \t \t result += ','; 
 
\t \t var trimmedTerm = curTerm.trim(); // remove leading/trailing spaces 
 
\t \t result += 'K' + encodeURI('"' + trimmedTerm + '"'); \t // wrap with "" then URI encode it, suitable for use as a URL 
 
\t } 
 
}
.panel 
 
{ 
 
\t border: solid 1px black; 
 
\t border-radius: 8px; 
 
\t padding: 8px; 
 
\t background-color: #eef; 
 
\t display:inline-block; 
 
} 
 

 
.panel textarea 
 
{ 
 
    width: 500px; 
 
    height: 200px; 
 
}
<div class='panel'> 
 
\t \t <textarea type='text' id='userInput' placeholder='Enter tags or a url. tags should be seperated with the | character'></textarea> 
 
\t \t <div style='text-align: center'><button id='goBtn'>Submit</button></div> 
 
\t \t <hr> 
 
\t \t <label>URL: <span id='output'></span></label> 
 
\t </div>

+0

これは正しい方向です。関連するキーワードや文字列だけでなく、実際にそのページに行くためのURLが必要です。 スニペットのコードで、キーワード「yes」を使ってテストしました。http://www.theurltosearch.com/#/K%22yes%22 と出力することに気付きました。これはyesタグで何も表示されませんユーザーがこのように見える場合は http://www.theurltosearch.com/#/Kyes それは – gwar9

+0

です。さて、単に 'window.location.href'を結果に設定してください!あなたがそこにいます。 2番目の点については、私は明らかにこれを私の答え、すなわち単語/複数語の用語でカバーしました - 非ラップされたバージョンは 'result + = 'K' + encodeURI(trimmedTerm);';) – enhzflep

+0

私は経験不足のように私は 'result = window.location.href;'を追加したように感じるbyId( 'outpu')のすぐ下にあります。textContent =。 。 。 。 (もちろんセミコロンの後に)、出力はまだアドレスバーにプッシュされていません。私は何かをシンプルに欠けていると確信しています – gwar9

関連する問題