«переопределяющая» функция JavaScript - PullRequest
2 голосов
/ 01 июня 2009

Мне нужно добавить некоторые проверки, прежде чем пользователь уйдет через меню ASP.NET.

Я заметил, что элементы отображаются с использованием функции JavaScript под названием Menu_Key

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

Есть ли способ переопределить эту функцию и заставить меню выполнить одну из моих, из которой я могу проверить, что мне нужно, и затем вызвать оригинал?

Ответы [ 5 ]

6 голосов
/ 01 июня 2009

Переопределите функцию после того, как она была первоначально определена, но следите за ней в переменной, чтобы вы могли вызвать ее позже. Вы бы эффективно переименовали оригинальную функцию Menu_Key.

var originalMenu_Key = Menu_Key;

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

   if ( /* everything validated */ ) {
     originalMenu_Key (t);
   }
};
2 голосов
/ 01 июня 2009

Приведенное выше решение является допустимым, но в общем случае переопределение может быть выполнено более гибким способом

var originalMenu_Key = Menu_Key;

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

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

В этом случае любые изменения сигнатуры функции не нарушат логику переноса.

1 голос
/ 01 июня 2009

Просто переопределите функцию внизу страницы (технически после первоначального объявления).

0 голосов
/ 01 июня 2009

Используйте код js:

    $(document).ready(function () {

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

НТН!

0 голосов
/ 01 июня 2009

У вас есть несколько способов сделать это. Зависит от того, что вы хотите.

Если вы хотите, чтобы функция выполнялась раньше существующей, добавьте ее. <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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...