2017-06-06 34 views
0

My WordpressのテーマはWooCommerceとやり取りするので、ユーザーがドロップダウンから特定の製品変数を選択すると、その地域の特定の価格が表示されます。マウスをシミュレートするドロップダウンをクリック

これはユーザーが手動でドロップダウンを選択したときに問題なく動作しますが、ブラウザのCookieに基づいてユーザーに適切なオプションを事前に選択して処理を高速化しようとしています。ユーザーが自分の領域に入っていない場合

例えば、彼らのブラウザは、私は、「PC-入った」と命名しましたし、次のjQueryスクリプトが実行されますクッキー持っていません。

$(function() { 
    $('ul li.product').each(function() { 
     /*If no region set by cookie*/ 
     if(document.cookie.indexOf("pc-entered=") < 0) { 
      /*Set downdown to generic*/ 
      $(this).find("#pa_region").val('generic'); 
     } 
    }); 
}); 

この作品を、正しい '一般的な'ドロップダウンオプションを自動的に事前に選択することができます。

残念ながら、これは私が立ち往生しているところです - ドロップダウンが正しいにもかかわらず、ユーザーが自分の地域を手動で選択したときと同じように、価格は自動入力されません。

など。

1)私のスクリプト使用して自動的に入力:

2)ユーザーが選択した:私は私のスクリプトでこれを交換しようとしました

enter image description here enter image description here

を:

$(this).find("#pa_region").val('generic'); 

ただし、this threadに記載されているオプションは、この場合は機能していないようです。私はまた、ページ上の他のすべてのスクリプトの後にスクリプトを実行しようとしたし、タイムアウト機能でスクリプトを実行するのを遅らせることもありますが、何も動作していないようです。

私のテストサイトはhereです。

TLDR -なぜjQueryスクリプトで価格が設定されないのですか?

答えて

1

$(this).find("#pa_region").val('generic');では、ドロップダウンのHTML値(テキスト)のみを変更します。

値を変更する関数への変更をトリガするイベントハンドラをアタッチする必要があります。

function changeValue(){ 
    $("#pa_region").val('generic'); 
    $("#pa_region").trigger('change'); 
} 

$("#pa_region").change(function() { 
    console.log("Handler for .change() called."); 
}); 

これは解決方法です。

私もJSFiddleとしましたので、テストすることができます。

+0

ありがとう、私はHTMLを変更するだけです。簡単な質問ですが、JSFiddleでは、ボタンをクリックすると関数がトリガーされます。既存の各機能を保持しながらページを読み込んだときに、どのように機能させることができますか? – Dan382

+1

私があなたを正しく理解していれば、document.ready機能でトリガーを追加することができます。 https://jsfiddle.net/2rkkb3jh/4/ – Dino

関連する問題