【问题标题】:ASP.NET MVC Ajax - Is it possible to execute a -GENERATED- Ajax link with keyboard input?ASP.NET MVC Ajax - 是否可以使用键盘输入执行 -GENERATED- Ajax 链接?
【发布时间】:2009-05-25 13:33:25
【问题描述】:

当用户按下键盘上的某个键时,是否有人能够 - 执行 - 生成的 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 生成的 HTML (Ajax.ActionLink())

<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
    }
});    

【问题讨论】:

    标签: asp.net-mvc ajax keyboard-shortcuts accessibility actionlink


    【解决方案1】:

    你尝试过使用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');
        }
    }
    

    【讨论】:

    • 天哪,我还没有尝试过 jQuery 部分。我想我可能真的可以让它工作。对于第二部分:我已经为 AJAX 和非 AJAX 请求创建了处理程序,但是它是一个 Intranet,每个人 (IE7) 和我 (FF) 都应该使用 AJAX,尤其是使用键盘输入。明天我要试试 jQuery 部分。
    【解决方案2】:

    请试试这个:

                var a = document.getElementById('linkid');
            $(a).trigger('click');
    

    【讨论】:

      猜你喜欢
      • 2013-07-26
      • 2017-07-03
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多