2017-09-19 16 views
1

私は技術的に動作するスクリプトを少し持っています。基本的にURLのハッシュタグを聴き、ハッシュタグと一致するオプション値で選択メニューを更新します。これはページの読み込みでも機能し、ハッシュタグがどのように更新されるかは気にしません。パーフェクト選択メニューのオプション項目の人間の選択をシミュレートします

問題は、私はあなたが手動でオプション項目を選択したときにオプション項目を選択したときに何かをするそのページに何かをする他の多くのスクリプトがありますが、オプション項目を自動的に選択します。この設定で実際にどのように人間の選択をシミュレートできますか?何か案は?

$(document).ready(function() { 
 
\t window.addEventListener('hashchange', fn, false); 
 
\t window.onload = fn; // fire on pageload 
 
\t function fn() { 
 
    document.getElementById('select-two').value = 
 
    window.location.hash.replace('#',''); 
 
\t } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="select-two" name="colordrop" class="color2" onchange="letsDoThis()"> 
 
    <option value="Jet" class="jet">Jet</option> 
 
    <option value="Cream" class="cream">Cream</option> 
 
    <option value="Chocolate" class="chocolate">Chocolate</option> 
 
    <option value="Classic Red" class="classic_red">Classic Red</option> 
 
</select>

そしてここJSFiddleでハッシュタグを証明する方法がわからないのに、私のJSFiddleです。 https://jsfiddle.net/liquilife/n9r6af7e/1/

これは解決されました。私はその答えを完全なものとしてマークしました。以下で動作します最終的なコード:

$(document).ready(function() { 
 
\t window.addEventListener('hashchange', fn, false); 
 
\t window.onload = fn; // fire on pageload 
 
\t function fn() { 
 
    $("#select-two").val(window.location.hash.replace('#','')).trigger("change"); 
 
\t } 
 
});

+2

あなたは「人間の選択をシミュレートする」とはどういう意味ですか?値を変更するには、以下を使用するだけで済みます(jsfiddleでテストされます)。 = 'Blush'; }); ' – quirimmo

+0

私は、その選択ドロップダウンから手動で選択が行われたときに機能を実行する他のスクリプトをページに持っています。しかし、ハッシュタグに基づく自動選択は検出されず、選択変更で結ばれた機能は起動されません。 –

+0

val()を使用してselectの値を設定すると、jqueryの変更イベントがトリガされないのはなぜですか?](https://stackoverflow.com/questions/4672505/why-does-the-jquery-change-イベントが発生しない場合のトリガ - 私が設定した-the-select-us-select-us) – showdev

答えて

2

あなたはjQueryのを使用しているので、あなたは.trigger(eventNameの)要素の特定のイベントを開始するための方法を使用することができます。あなたは、両方の値を設定すると、イベントがそうのように発射する可能性があります。例えば

$("#select-two").val(window.location.hash.replace('#','')).trigger("change"); 
+0

ありがとう!これは魅力的に機能しました。そして私は何かを学びました。それはすごいです。私はちょうど今うまく動作するJSのスニペットで私のポストを更新しました。 –

1

あなたのselect要素の変更の際に選択された値を検出し、それが発生したときにコードを実行するためにjQueryのchange機能を使用することができます。

​​

+1

OPのコードに基づく小さな例が参考になります。 – showdev

+0

Yossifありがとう、これは私が行くために必要な正確な方向だった。私はそれが私の必要性に直接関連する例を含んでいたので、他の答えを正しいものとしてマークしました。しかし、ちょうど方向に感謝したがっていました。 –

関連する問題