0

ユーザーがキーボードのキーを押したときに、誰かがAjax.ActionLinkを生成することができますか?(これは、アクセシビリティのために必要とされる)ASP.NET MVC Ajax - キーボード入力で-GENERATED-Ajaxリンクを実行できますか?

注:私は、ASP.NET MVC +マイクロソフト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 
    } 
});  

答えて

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の一部を試していません。私は実際にそれが働くかもしれないと思う。 2番目の部分については、AJAXと非AJAXの両方の要求に対してハンドラを作成しましたが、イントラネットであり、誰でも(IE7)と私(FF)はAJAXを使用して、特にキーボード入力を使用する必要があります。私は明日次のjQueryパートを試してみるつもりです。 – Ropstah

+0

よくpotverdrie、それは動作します! :) – Ropstah

0

これを試してみてください:

  var a = document.getElementById('linkid'); 
     $(a).trigger('click'); 
関連する問題