0

Enterキーを押したときに、現在フォーカスがあるハイパーリンクをクリックしたい。

誰かがjavascriptコードを手伝ってくれますか?

ボタンにフォーカスがあるときに実際にボタンをクリックしようとするコードをJavaScriptで記述しました-

 if ((KeyCode == 13))
                {
                    evt.returnValue=false;
                    evt.cancel = true;
                
                    if((document.activeElement.name != 'btnChangeRep') && 
                        (document.activeElement.name != 'btnSubmitAndOpen') &&  
                        (document.activeElement.name != 'hypTaxID') && document.activeElement.name != 'hypCoTaxID') &&
                        (document.activeElement.name != 'hypFormerRegSearch'))
                {
                        btn = document.getElementById('btnSubmit');
                        if (btn == null)
                    {                       
                            document.getElementById('btnSave').click();                 
                    }
                        else
                    {                   
                            document.getElementById('btnSubmit').click();               
                    }
                }
                else 
                {
                    document.getElementById(document.activeElement.name).click();                   
                }

Firefoxでは正常に動作していますが、IEではEnterキーを押してもリンクが開きません。

誰かが私が間違っているところとして私を助けてくれますか

ハイパーリンクのHTMLを編集

<asp:hyperlink id="hypTaxID" runat="server"></asp:hyperlink>
4

1 に答える 1

1

リンクのクリックを呼び出すと、リンクのJavaScriptクリックイベントが発生しますが、ナビゲーションが常に発生するとは限りません。

以前は、ナビゲーションを行うためにjavascriptを使用する必要がありました。次のようなものが必要になります。(jqueryを使用して単純化することもできます)

if ((KeyCode == 13))
{
   evt.returnValue=false;
   evt.cancel = true;

   if((document.activeElement.name != 'btnChangeRep') && 
     (document.activeElement.name != 'btnSubmitAndOpen') &&  
     (document.activeElement.name != 'hypTaxID') && 
      document.activeElement.name != 'hypCoTaxID') &&
     (document.activeElement.name != 'hypFormerRegSearch'))
  {
        btn = document.getElementById('btnSubmit');
        if (btn == null)
        {                       
            document.getElementById('btnSave').click();                 
        }
        else
        {                   
             document.getElementById('btnSubmit').click();               
        }
  }
  else 
  {  
      /*new code*/
      var link = document.getElementById(document.activeElement.name).getAttribute("href"); 
      document.location.href = link;
  }
}

また、ASP.net要素のIDが期待どおりであることを確認してください。Webフォームは、IDと名前のマングリングで有名です。

また、サーバー側でこれを処理するためにASP.netを使用していない理由も評価します。ASP.netパネルを使用すると、パネルの既定のボタンを設定して、Enterボタンが押されたときにボタンがクリックされるようにすることができます。

于 2013-01-21T02:27:23.080 に答える