0

複数の配布ポイント (東海岸に 1 つ、西海岸に 1 つ) を持ちたいクライアントがいます。

私が使用している e コマース ソリューションはこれをサポートしていません。発送元の郵便番号をキーとして複数の発送オプションを用意することで、回避策を見つけました。

配布場所を反映するように「配送オプション」を変更するためにいくつかのjQueryを使用しました。

アイデアは機能しますが、私の弱点は jquery です。ユーザーが配送オプションを 2 回目に変更すると、デフォルトで元の e コマースのデフォルト オプションに戻ります。

これまでのコードは

jQuery(function($){ 
    var sel = document.getElementById('ShippingOptions');

    for(var i = sel.options.length - 1; i >= 0; i--) {
        if(sel.options[i].value == "-1")
            sel.options[i].text = "Select postage";
        if(sel.options[i].value == "75554")
            sel.options[i].text = "East Coast Distribution";
        if(sel.options[i].value == "75555")
            sel.options[i].text = "West Coast Distribution";

        $('#shippingSpan').text("Select postage");
    }
});
4

2 に答える 2

1

jQuery と DOM を混在させないでください。

その場で選択を変更するのは良い考えではありません。代わりに、正しい配送で更新できる 2 つの選択項目または非表示フィールドを用意します。

配布先変更のきっかけは?

そして、なぜそれが問題なのですか?ユーザーが値 75554 のオプションを選択した場合、テキストは東海岸ではなく、75555 を選択した場合、オプションのテキストは西海岸ではありませんか?

私は(質問と提供されたコードから)これがあなたが望むかもしれないものだと推測しています:

デモ

 var shippingOpts = { "75554":"East Coast Distribution", "75555":"West Coast Distribution" }

$(function() {    
  $('#ShippingOptions').on("change",function() {
    var val = $(this).val();
    $('#shippingSpan' ).text(
      (shippingOpts[val]) ? 
       shippingOpts[val] : 
       $("#ShippingOptions option:selected").text()
    );
  });

  // when page loads:
  $('#ShippingOptions').trigger("change");
});
于 2013-01-21T10:05:39.287 に答える
0

このようにjqueryを使用できます。

    $('#selectorid option:selected').each(function(i, item){
      // $(this).value() to access value 
      // $(this).text() to access text
      // $(this).value(" set value here "); same way for text

      // use if else ladder or switch case 

     });
于 2013-01-21T10:13:34.983 に答える