0

当我按下回车键时,我想要一个当前具有焦点的超链接。

有人可以帮我处理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 是您所期望的。网络表单因 ID 和名称篡改而臭名昭著。

我还将评估您为什么不使用 ASP.net 在服务器端处理此问题。使用 ASP.net 面板可让您为面板设置默认按钮,以便在按下 enter 按钮时单击该按钮。

于 2013-01-21T02:27:23.080 回答