1

ユーザーが入力するフォームを作成する JavaScript 関数にいくつかのパラメーターを渡します。これらのパラメーターの中には、フォームの保存またはキャンセルを処理する別のクラスに含まれる 2 つの関数があります。キャンセル機能には、作成するエンティティのリストを決定するために使用する 2 つのパラメーターが必要です。問題はパラメータにあります。フォーム作成機能で、パラメーターを指定せずに新しく作成したキャンセル ボタンにキャンセル機能をアタッチすると、機能ボタンは正常に機能しますが、パラメーターがないために空のリストが作成されます。ただし、パラメーターを使用して関数をアタッチすると、ボタンがクリックされたときではなく、ページが作成されたときに関数がすぐに起動します。javascript、jquery、さらにはyahoo.utilなど、いくつかの異なる方法でリスナーを接続しようとしました。他のインスタンスでパラメーターを使用して呼び出された場合、キャンセル関数ですべてが正しく機能します。パラメータが渡されたときに関数が早期に起動する理由についてのアイデアはありますか?

これは、偶数リスナーをアタッチしたさまざまな方法の sudo コードです。

function buildform(formData, saveFunction, CancelFunction, p1, p2){
      $("#cancelButton").live("click", cancelFunction(p1, p2);
      YAHOO.util.Event.on("cancelButton", "click", cancelFuntion(p1, p2));
      cancelButton.setAttribute("onClick",cancelFunction(p1, p2);
}
4

1 に答える 1

3

You have to wrap your method calls in function blocks, otherwise they are evaluated immediately:

$("#cancelButton").live("click", function () { cancelFunction(p1, p2); });
于 2012-05-25T17:01:42.117 に答える