ASP.NET MVC Ajax - возможно ли выполнить соединение -GENERATED- Ajax с клавиатурным вводом? - PullRequest
0 голосов
/ 25 мая 2009

Кто-нибудь может выполнить исполняемый 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');
    }
});

HTML, сгенерированный ASP.NET MVC ( 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
    }
});    

Ответы [ 2 ]

2 голосов
/ 25 мая 2009

Вы пробовали использовать механизм запуска 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');
    }
}
0 голосов
/ 11 апреля 2011

Пожалуйста, попробуйте это:

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