我需要在用户通过ASP.NET菜单导航之前添加一些验证。
我注意到这些项目被渲染为使用名为Menu_Key的javascript函数
<td id="ctl00_MainMenun1" onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(this)">
我有办法覆盖该功能并让菜单执行我的一个菜单,我可以从中验证我需要的内容然后调用原始函数吗?
答案 0 :(得分:6)
在最初定义函数后重新定义函数,但在var中跟踪它以便稍后调用它。您将有效地重命名原始的Menu_Key函数。
var originalMenu_Key = Menu_Key;
Menu_Key = function(t) {
// do your validations here
if ( /* everything validated */ ) {
originalMenu_Key (t);
}
};
答案 1 :(得分:2)
以上解决方案是有效的,但在一般情况下,重新定义可以更灵活的方式完成
var originalMenu_Key = Menu_Key;
Menu_Key = function(t) {
// do your validations here
if ( /* everything validated */ ) {
return originalMenu_Key.apply(this,argumets);
}
};
在这种情况下,函数签名的任何更改都不会破坏包装逻辑。
答案 2 :(得分:1)
只需重新定义页面底部的功能(技术上在初始声明之后)。
答案 3 :(得分:0)
您有多种方法可以做到这一点。取决于你想要的东西。
如果您希望功能在现有功能之前运行,请添加此功能。
<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);
}
答案 4 :(得分:0)
使用js代码:
$(document).ready(function () {
$("td").mouseover(function(){
alert('MouseOver validation content goes here.');
}).mouseout(function(){
alert('MouseOut validation content goes here.');
});
HTH!