2016-11-07 10 views
0

入力が変更されたとき(特定のdivを表示/非表示)に実行されるjQuery関数を定義しました。ここまでは順調ですね。ページロード時にjQuery関数を1回呼び出す

私の質問:ページが読み込まれるとこの機能を1回呼び出す方法はありますか?

経験が不足しているので、これまでに見つかった回答を試している間に、私はそれを悪化させています(文書準備宣言などの外に関数をドラッグする)。私は関数がどこにいても残っていなければならないと思うが、それらを呼び出すことはまだ動作していないようだ。スクリプト:

jQuery(document).ready(function($) { 

    $('input[name=project-type]').change(chooseProject); 

    function chooseProject() { 
     var val = $(this).val(); 
     $('#div1').hide();  
     $('#div2').hide(); 
     $('#div3').hide(); 
     if (val == 'Short') { 
      $('#div1').show(); 
     } 
     else if (val == 'Long') { 
      $('#div1').show(); 
      $('#div3').show(); 
     } 
     } 

    }); 

いくつかの背景:入力は、ラジオボタンで、多段階の問い合わせフォームから選択したオプションは、しかし、変化イベントなし機能がで蹴るされていない、新しいpageloadに記憶されています。

苦労した時間が経っても、本当に感謝しています!

答えて

2

triggerあなたがそれをバインドした後に、その要素のchangeイベントを行うことができます。これは、ユーザが自然にトリガしたかのようにハンドラを実行します。

私はこのような何かをしようとするだろう:

jQuery(document).ready(function($) { 
    //function declaration 
    $('input[name=project-type]').on('change', chooseProject); 
    $('input[name=project-type]').trigger('change'); 
}); 
+0

おかげで、私はまだ成功していなかったけれどもしようとしています。その理由は、ページがロードされた後に記憶されている入力が貼り付けられている可能性があると考えています。私はトリガーがあまりにも早く実行すると思いますか?あなたが提案をしているかどうかわからない、私はそれが元の質問に答えるとしてこれを受け入れることができます。 – MrOrange

+0

'change'イベントをバインドした後に入力が追加された場合、jQueryで対象とする要素はその時点では存在しないため(ページが読み込まれるときに新しい要素に置き換えられるため)、動作しません。ただし、イベントをバインドして、入力が置き換えられた後で変更をトリガーすることもできます。 – Sharlike

+0

入力要素が存在し、選択したオプション(値)はページが読み込まれた直後に変更されます。申し訳ありませんが明確ではありません。しかし、選択されたオプションが別の(プラグイン)スクリプトによって変更された場合、変更イベントとしてカウントされませんか?または、ユーザーは手動でオプションを選択する必要がありますか? – MrOrange

関連する問題