0

Есть ли кто-нибудь, способный -execute-сгенерированный Ajax.ActionLink, когда пользователь нажимает клавишу на клавиатуре? (Это необходимо для обеспечения доступности)ASP.NET MVC Ajax - Возможно ли выполнить ссылку -GENERATED-Ajax с вводом клавиатуры?

Примечания: Я использую библиотеку 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

Вы пытались использовать механизм запуска 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

Гоша, я не пробовал часть JQuery. Думаю, я мог бы заставить его работать. Для второй части: я создал обработчики для AJAX и не-AJAX-запросов, однако это интрасеть, и все (IE7) и мне (FF) должны работать с AJAX, особенно с использованием ввода с клавиатуры. Завтра я попробую часть jQuery. – Ropstah

+0

Ну, потвердри, это работает! :) – Ropstah

0

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

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