0

当用户按下键盘上的键时,是否有人能够执行生成的 Ajax.ActionLink?(这是可访问性所必需的)

注意:我正在使用 ASP.NET MVC + Microsoft Js 库(...Ajax.js / ...MvcAjax.js)+ jQuery

用于捕获按键的 Javascript (IE + Firefox)

$(document).keypress(function(event) {
    if(event.keyCode == 27) {
        //execution here
        var a = document.getElementById('linkid');
    }
});

由 ASP.NET MVC ( Ajax.ActionLink() )生成的 Html

<a id="linkid" href="/controller/action" onclick="
Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), 
{ insertionMode: Sys.Mvc.InsertionMode.replace, 
updateTargetId: 'SomeDivId' });
">LinkText</a>

以下不是我要找的,这不起作用!

$(document).keypress(function(event) {
    if(event.keyCode == 27) {
        var a = document.getElementById('linkid');
        a.onclick();           //doesn't exist in Firefox
        a.click();             //doesn't "work" in Firefox (reference to "this" [a] is needed .NET MVC javascript)
        a["onclick"]();        //same as .onclick()
        a["click"]();          //same as .click()

        //or even:
        a.onclick.apply(a);    //doesn't exist in Firefox
        a.click.apply(a);      //Somehow keeps "this" reference, but throws Sys.ArgumentUndefinedException
    }
});    
4

2 回答 2

2

你试过使用 jQuery 的触发机制吗?

$(document).keypress( function(e) {
    if (e.keyCode == 27) {
       $(this).trigger('click');
    }
}

如果做不到这一点,您可以只调用 href,它将执行完整的回发,但如果编写该操作以处理 AJAX 和非 AJAX 请求,则应该完成所需的操作。

$(document).keypress( function(e) {
    if (e.keyCode == 27) {
       location.href = $(this).attr('href');
    }
}
于 2009-05-25T13:39:28.553 回答
0

请试试这个:

            var a = document.getElementById('linkid');
        $(a).trigger('click');
于 2011-04-11T16:13:22.893 回答