2016-05-13 4 views
0

jQueryを使用して、選択したオプション(国のドロップダウンリスト内の米国内)内で選択したオプションを初期化する必要がある状況があります。残念ながら、プラットフォームの制限によりHTML内に設定することはできません。ターゲットとするクラスやIDはありません。このフォームはまた、ajaxに基づいて変更されます(ゲストがゲストかどうかに基づいて同じフォームの3つのバージョンがあり、チェックアウト中に登録するか、またはすでに登録されています)。現在のスクリプト私は作品を作成しましたが、あなたは別の国に変更できません。jQueryで選択したオプションを設定する

$(document).ajaxSuccess(function() { 
    $('option:contains("United States"):not(:contains("Minor"))').prop("selected", true); 
}); 

をだから、基本的には選択されたとして、それを設定しながら、ユーザが米国のオプションから変更することはできません。 Ajaxが何らかの理由でオプションが設定されるたびに、Ajaxが再ロードされているようです。

ありがとうございます!

+0

ドロップダウンを開くことはできませんか?ドロップダウンには何もありませんか?または、ドロップダウンから選択した項目を保存しませんか? – amflare

+0

@amflare私はそれを開くことができます、すべてのオプションがあり、私は新しい国を選択することができますが、その選択は残っていません、それはすぐに選択された米国に戻ります。 –

+0

@amflare、これは現在のところ、メニュー内の唯一のドロップダウンです(州のオプションは、結合された州が通常選択されている場合はテキストボックスからドロップダウンに変更されますが、これまでは連合国があらかじめ選択された状態でこれを行っていません)おそらく 'ajaxSuccess'を引き起こして、再び連邦状態を再選択する原因となります。 –

答えて

0

したがって、コメントに基づいて、ドロップダウンを変更しようとするたびに、より多くのAJAXが呼び出されるようです。これはあなたの$ .ajaxSuccess関数を呼び出します。つまり、1回のAJAX呼び出しごとにリセットされます。あなたは、コードも実行する必要があるかどうかを判断するためにajaxSuccessに渡される引数を利用することができ、

var set = false; 
$(document).ajaxSuccess(function() { 
    if (set) return; 
    $('option:contains("United States"):not(:contains("Minor"))').prop("selected", true); 
    set = true; 
}); 

をまたは:

あなたはこのような何かを行うことができます。たとえば、

このアプローチは、もちろんあなたが聞いている1つの特定のURLがある場合にのみ機能しますが、そのアイデアを得ることができます。ちょうどajaxSuccess関数が、である必要があるときにだけ確認してください。

+0

if(!set){//他の2行のコード} 'はより直感的なタッチです。しかし、はい、私はこれを多くの機会に行ってきました。それは素晴らしい作品です。 – amflare

+0

最初のブロックは完全に機能しました。簡単な答えは私が後で私自身で理解していないために自分自身が嫌いだと確信しています。ありがとう! –

+0

@ amflareおそらく、異なる吹き出しのために異なるストローク:) – aaronofleonard

関連する問題