0

Web サイトの検索機能の一部として、優れたDropKick jQuery プラグインを使用しています。DropKick は、ユーザーが検索する Web サイトを選択するために使用する選択ボックスをスタイリングしています。Google カスタム検索が使用されており、非表示の「#cx」フィールドの値を変更するよう DropKick に指示することに成功しました。#cx フィールドは、使用する検索アカウントを Google に伝えます。

HTMLは次のとおりです。

<form action="http://example1.com/search/" method="get" id="cse-search-box">
    <fieldset>
        <input type="hidden" name="cx" id="cx" value="custom_search_account_1" />
        <input type="hidden" name="cof" value="FORID:11" />
        <input type="hidden" name="ie" value="UTF-8" />            
        <div class="keywords">
            <label for="keywords">Search</label>
            <input type="text" name="q" id="keywords" class="search text" />
        </div>
        <select name="dk" class="dk">
            <option value="custom_search_account_1">Search website 1</option>
            <option value="custom_search_account_2">Search website 2</option>
            <option value="custom_search_account_3">Search website 3</option>
        </select>
        <input type="image" class="button" src="imgurl" alt="Search" name="sa" />
    </fieldset>
</form>

ユーザーが選択した検索エンジンに応じて、非表示の「#cx」フィールドの値を変更する作業中の jQuery コードを次に示します。

$('.dk').dropkick({
    change: function (value, label) {
        var x = $(this).val();                
        $('#cx').val(x);
    }
});

それはすべて素晴らしいです。ただし、ユーザーの選択に基づいてフォーム アクションも変更する必要があります。このプラグインを使用してこれは可能ですか?その場合、jQuery コードにどのような変更を加える必要がありますか? 私はすでにこれで私の知識の限界を押し上げました!

ご協力いただきありがとうございます。

乾杯

4

1 に答える 1

1

アクション メソッドの変更は、他の属性を変更するのと同じくらい簡単です。したがって、.change メソッドでは、単純にチェックを行い、値に応じてアクションを変更します。

ここにフィドルがあります

$('.dk').dropkick({
    change: function (value, label) {
        var x = $(this).val();                
        var action;
        $('#cx').val(x);

        if (x == 'custom_search_account_1') { action = 'action1'; }
        else if (x == 'custom_search_account_2') { action = 'action2'; }
        else if (x == 'custom_search_account_2') { action = 'action2'; }


        $('#cse-search-box').attr('action', action);

     }
});
于 2012-10-02T13:16:37.050 に答える