0

私は2つのJavascriptファイルを持っていますが、手元の問題を単純化するために大幅に合理化します。

form.js

function open_action_dialog(){
   // code to open the dialog..

   // If [Return] is pressed when focus is on the #action field, call the action confirmation function defined in the second javascript file.
   $('#action').keypress(function(e){
      var fn_name = "action_confirm";
      if(e.which == 13)
         window[fn_name]();
   });
}

blog.form.js

$(function (){
   $("#dialog_action_open").click(function() { 
       open_action_dialog(); 
   });

   function action_confirm(){
     alert('action confirmed');
     return;
   }
});

したがって、私のページには、dialog_action_openクリックするとアクションダイアログが開くIDのボタンがあります。これは、2番目のファイルの関数であり、最初のファイルの関数を正常に呼び出しています。

ダイアログ内には、カーソルがフィールドにフォーカスされているときにactionユーザーが押すと、2番目のファイルで定義された関数を呼び出すように設定したidの入力テキストフィールドがあります。keypressイベントをピックアップしますが、2番目のファイルから関数を呼び出しません。Googleのコードインスペクター内のエラーは次のとおりです。[Return]action_confirm()

Uncaught TypeError:オブジェクト[オブジェクトウィンドウ]のプロパティ'action_confirm'は関数ではありません

だから、私の質問は、最初のファイルの関数の内部から2番目のファイルから関数を正常に呼び出すことができるようにするために何をする必要があるのですか?念頭に置いておくと、後で定義された関数をすぐに呼び出すことはできないことを認識しています。しかし、私のaction_confirm()関数は、最初のファイルから呼び出す関数の後に定義されていますが、ページが読み込まれた後、より具体的にはページのクリックイベントの後に呼び出しが発生していることを考えると、この技術は重要ではありませんか?

啓発されていただければ幸いです。

どうもありがとう。

4

1 に答える 1

0

呼び出そうとしている関数は別の関数にラップされているため、他のJSの関数からは見えません。

あなたは削除することができます$(function (){(そしてそれは閉じています});

于 2012-05-23T23:50:17.603 に答える