2012-04-11 8 views
1

一つのsearchformから別のsearchformに切り替えるために選択ボックスを作ろうとしていますが、HTMLフォームでは非常に不慣れです。使用する検索フォームを選択するにはどうすればよいですか?

「ブログ」と「ショップ」の2つのオプションがあります。 (FYI WordPressのブログ1とOpencartためのショップ1。)

検索のURLは次のようになりWordPress用:?/ S = TEST Opencartの場合:?/ショップ/ルート=製品/検索& FILTER_NAME = TEST

これらは、これまでの2つの形態である:あなたの助けを事前に

<form method="get" id="blogsform" class="form-search" action="/"> 
<input type="search" name="s" id="s" placeholder="Blog durchsuchen ..."> 
<input type="submit" class="submit" id="searchsubmit" value="Durchsuchen"> 
</form> 

<form method="get" id="shopsform" class="form-search" action="/shop/"> 
<input type="hidden" name="route" value="product/search"> 
<input type="search" name="filter_name" placeholder="Shop durchsuchen ..."> 
<input type="submit" class="submit" id="searchsubmit" value="Durchsuchen"> 
</form> 

おかげで、jQueryを使って マルクス

+0

「どの検索フォームから別の検索フォームに切り替える」を定義しますか? 1つは隠され、もう1つは選択したボックスの選択に基づいて表示されますか? – mellamokb

+0

申し訳ありませんが、実際には考えていません。それは実際には同じフォームでなければなりませんが、他のアクション/値を使用してください。ちょうどそのように: 検索[ブログ/ショップ]:[searchfield] [searchbutton] – reitermarkus

+0

あなたのプロジェクトでjQueryのようなJavaScriptライブラリを使用できますか? – mellamokb

答えて

2

、これらはに適用される簡単な変更です選択ボックスのイベント:

<select id="chooseform"> 
    <option value="">Select Form...</option> 
    <option value="Blog">Blog</option> 
    <option value="Shops">Shops</option> 
</select> 

次の2つのフォームを持ちたい、とショー/選択に基づいて各フォームを非表示にした場合、あなたはこのような何かがあります

$('#chooseform').change(function() { 
    var choice = $(this).val(); 
    if (choice == "Blog") 
    { 
     $('#blogsform').show(); 
     $('#shopsform').hide(); 
    } 
    else if (choice == "Shops") 
    { 
     $('#blogsform').hide(); 
     $('#shopsform').show(); 
    } 
    else 
    { 
     $('#blogsform').hide(); 
     $('#shopsform').hide(); 
    } 
});​ 

をデモ:http://jsfiddle.net/Pf9QQ/


あなたは、単一のフォームを持っていますが、アクション/方法や表示のプロパティを変更したい場合動的選択に基づいてフォームを、あなたはそれをこのような何か行うことができます:

$('#chooseform').change(function() { 
    var choice = $(this).val(); 
    if (choice == "Blog") 
    { 
     $('#theform').attr('action', '/'); 
     $('#s').attr('name', 's'); 
     $('#s').attr('placeholder', 'Blog durchsuchen ...'); 
     $('#theform').show(); 
    } 
    else if (choice == "Shops") 
    { 
     $('#theform').attr('action', '/shop/'); 
     $('#s').attr('name', 'filter_name'); 
     $('#s').attr('placeholder', 'Shop durchsuchen ...'); 
     $('#theform').show(); 
    } 
    else 
    { 
     $('#theform').hide(); 
    } 
});​ 

をデモ:http://jsfiddle.net/JgLSE/


あなたが選択した方法は、保守が容易である方法によって異なります。多少の小さな違いしかない大きなフォームがある場合は、2番目の方法を使用できます。フォームが非常に異なる場合は、2つの別々のフォーム全体を保持し、ユーザーの選択に基づいて適切に表示/非表示することができます。なぜなら、それはあまり混乱しないか複雑になるからです。

+0

ありがとう、ありがとうございますが、name = "route"とvalue = "product/search"を忘れました。あなたはこの問題の最初の方法を提案しますか? – reitermarkus

+0

フォームを結合する必要がなく、両方を維持しても問題ない場合は、最初の解決策を検討します。 'name =" route "までは、' blogsform'が無関係のフィールドを無視すると仮定して、意図的にそこに残しましたが、技術的には入力フィールドを動的に追加/削除することもできます。 – mellamokb

+0

ありがとう、それはjsFiddleで動作していますが、実際のサイトでは動作していません。クラウドフレア縮小の問題かもしれません。 – reitermarkus

関連する問題