2016-06-23 28 views
0

私はこのnice old scriptを使用して2つのサイトの場所を検索しています。同じHTMLページの複数の場所に検索フォームを配置するまではうまく機能しています。このフォームの複数のプレースメントを持つと、すべてがキャンセルされます。検索オプションを含む複数の検索フォーム

目的は同じHTMLページの3〜4か所でこの検索フォームを使用できるようにすることです。

HTMLのFORM

 <form name="searchform" class="top-search-bar-multiple" role="search" onsubmit="return dosearch();"> 
<input type="text" name="searchterms" placeholder="Search our products" /> 
<button type="submit" name="SearchSubmit" class="search-bar--submit icon-fallback-text"> 
    <span class="icon icon-search" aria-hidden="true"></span> 
    <span class="fallback-text">search</span> 
</button> 
<input name="sengines" type="radio" value="http://stackoverflow.com/search?q=" checked/> <small>query 1</small> &nbsp; 
<input name="sengines" type="radio" value="http://stackoverflow.com/search?q=" /> <small>query 2</small> 

JAVASCRIPT

// <![CDATA[ 
function dosearch() { 
    var sf=document.searchform; 
    for (i=sf.sengines.length-1; i > -1; i--) { 
    if (sf.sengines[i].checked) { 
     var submitto = sf.sengines[i].value + escape(sf.searchterms.value); 
    } 
    } 
    window.location.href = submitto; 
    return false; 
} 
// ]]> 
+1

私が引き受けると同じことを毎回形成し、その後、スクリプトはdocument.searchform'をつかむためにどの '知らないので、検索結果は空されて終わります。最初の検索フォームは、後に来る人数に関係なく常に機能しますか?あるいは、複数のものがあるときにそれらのすべてが壊れるのでしょうか? – easiestripes

答えて

0

は、既に述べたように、それは単に要素が検索したフォームを知りません。あなたが望むすべてがちょうど迅速かつシンプルなソリューションであれば、単にonsubmit="return dosearch(currentForm)"にパラメータとしてフォームを転送し、その後場合のみ、指定されたフォームを検索するために使用 - このコードは、いくつかのリファクタリングを必要とすることができるという事実に加えて

、。このように:あなたが検索を命名している場合

http://codepen.io/MattDiMu/pen/PzWYrK

+0

感謝 - すべてのフォームがそのJavaScriptを共有することはできませんか?だから、私はそれぞれのフォームで別のJavaScriptが必要でしょうか? – Jay

+0

@Jayいいえ、JavaScriptを1回だけ持つだけで十分です。これは、クリックされたフォームを引数として受け取るようにパラメータ化されて動作します。この回答が役立つ場合は、回答としてマークすることができます:) – MattDiMu

関連する問題