0

選択したオプションを javascript で URL に送信することはできますか? 私の場合、それが唯一の解決策のようです。私のコードは非常に基本的です。私の問題は、私が賢く扱わなければならないことです(私は賢く嫌いです)

{block name="frontend_detail_buy"}

<select name="lieferperiode" id="lieferperiode">
    <option value="{$sArticle.ordernumber|replace:"a":"a"}">jede Woche</option>
    <option value="{$sArticle.ordernumber|replace:"a":"b"}">alle 2 Woche</option>
    <option value="{$sArticle.ordernumber|replace:"a":"c"}">alle 3 Woche</option>
    <option value="{$sArticle.ordernumber|replace:"a":"d"}">jeden Monat</option>
</select>

<select name="menge" id="menge">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
</select>

<script type="text/javascript">
var lieferung = document.getElementById("lieferperiode");
var periode = lieferung.options[lieferung.selectedIndex].value;

var mengen = document.getElementById("menge");
var anzahl = mengen.options[mengen.selectedIndex].value;

var link = "http://XXXXX.de/XXXXX.php/sViewport,checkout/sAction,addArticle/sAdd," + periode + "/sQuantity," + anzahl;

{/block}

ご覧のとおり、リンクにはドロップダウン メニューから変更可能な 2 つの変数が含まれています。私はアラートとdocument.writeでテストを行いましたが、常にエラーvar link is undefinedが表示されます。私は何をしているのですか?乾杯

4

2 に答える 2

1

まず、無効な html があります。

<option value="{$sArticle.ordernumber|replace:"a":"a"}">jede Woche</option>

この element.value を要求すると、次のようになります。{$sArticle.ordernumber|replace:

次のように変更できます。

<option value='{$sArticle.ordernumber|replace:"a":"a"}'>jede Woche</option>

JavaScriptについては、非常に可能です。そして、あなたはそれをやっています。表示されているコードにアラートを接続する際に問題が発生する可能性があります。

私はあなたのコードを機能させることができました。このjsfiddleを参照してください

JavaScriptを呼び出すボタンを追加したところ、機能しました

于 2013-09-28T00:02:37.710 に答える
0

Filipe Silva が言及したように、まず、オプションのコードを有効な html コードに変更する必要があります。

あなたのJSコードは良いです。問題は、選択がロードされる前に実行されることです。したがって、コードを実行する前に DOM が完全に読み込まれるようにするjQueryライブラリを使用することをお勧めします。

コードがそのまま表示され、Smarty によって解釈されないように、コードを{literal}タグで囲むことをお勧めします。

あなたのコードは次のようになります。

{literal}
<script type="text/javascript">
    $(document).ready(function(){

        var periode = $("#lieferperiode").find(":selected").val();

        var anzahl = $("#menge").find(":selected").val();

        var link = "http://XXXXX.de/XXXXX.php/sViewport,checkout/sAction,addArticle/sAdd," + periode + "/sQuantity," + anzahl;

        alert(link);
    });
</script>
{/literal}
于 2013-09-28T09:44:35.783 に答える