2009-06-01 21 views
2

ユーザーがASP.NETメニュー経由でナビゲートする前に、いくつかのバリデーションを追加する必要があります。'javascript関数をオーバーライドする

私はアイテムが

<td id="ctl00_MainMenun1" onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(this)"> 

Menu_Key

と呼ばれるjavascript関数を使用するようにレンダリングされていることに気づいた私がその機能を無効にして、メニューは私が必要なものを確認することができ、そこから私の1を、実行させる方法オリジナルを呼び出しますか?

答えて

6

最初に定義した関数を再定義しますが、後で呼び出すことができるようにvar内でその関数を追跡します。効果的に元のMenu_Key関数の名前を変更します。

var originalMenu_Key = Menu_Key; 

Menu_Key = function(t) { 
    // do your validations here 

    if (/* everything validated */) { 
    originalMenu_Key (t); 
    } 
}; 
1

機能をページの最後に(技術的には最初の宣言の後に)再定義してください。

0

これを行う方法は複数あります。あなたが望むものの依存する。

既存の関数の前に関数を実行する場合は、これを追加します。あなたは条件付きで第2の機能を実行したい場合は

<td id="ctl00_MainMenun1" onmouseover="Menu_HoverStatic(this)" 
onmouseout="Menu_Unhover(this)" onkeyup="my_Function(); Menu_Key(this);"> 

この

<td id="ctl00_MainMenun1" onmouseover="Menu_HoverStatic(this)" 
onmouseout="Menu_Unhover(this)" onkeyup="my_Function(this);"> 


function my_Function(sender) 
{ 
    if(valid) 
    Menu_Key(sender); 
} 
0

使用して、jsのコードを追加します。

$(document).ready(function() { 

    $("td").mouseover(function(){ 
      alert('MouseOver validation content goes here.'); 
     }).mouseout(function(){ 
      alert('MouseOut validation content goes here.'); 
}); 

HTHを!このような場合に

+0

jQueryを使用している場合にのみ動作します - 私はどこにでも言及しているOPが表示されません... –

+0

Jasonに同意します。私は "ovveride"という単語を省略しました:)ここで再定義はあなたにとって正しい答えです、マリオが指摘したように。 – diadiora

2
溶液上

が有効なものであるが、一般的な場合には再定義は、ビットで行うことができ、より柔軟な方法

var originalMenu_Key = Menu_Key; 

Menu_Key = function(t) { 
    // do your validations here 

    if (/* everything validated */) { 
    return originalMenu_Key.apply(this,argumets); 
    } 
}; 

、関数シグネチャの変更は、論理ラッピング中断されません。

関連する問題