焦点在另一个控件上,但按Enter键按下默认按钮

时间:2013-01-20 23:28:23

标签: javascript asp.net html

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

有人可以帮助我使用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链接中无论如何都无法打开。

有人可以帮我解决我出错的地方

编辑 HTML for hyperlink

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

1 个答案:

答案 0 :(得分: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是您所期望的。 Webforms因ID和名称损坏而臭名昭着。

我还会评估为什么你不在服务器端使用ASP.net来处理这个问题。使用ASP.net面板可以为面板设置default button,以便在按下输入按钮时单击该按钮。