【问题标题】:Why does the default enter button not work in some browsers?为什么默认输入按钮在某些浏览器中不起作用?
【发布时间】:2009-11-04 16:57:33
【问题描述】:

有什么建议可以设置一个默认的输入按钮,它不仅可以在 IE 中使用,还可以在 Firefox、Chrome、Safari 等中使用。我有许多面板都设置了默认按钮,但是当我在非 ie 浏览器中按 Enter 时,它只是默认为页面上的第一个链接。

有什么建议吗?

【问题讨论】:

    标签: asp.net linkbutton panels


    【解决方案1】:

    您可以编写一些 javascript 来检查按下的是哪个按钮 - 如果是回车键,则执行您想要的操作。

    检查输入类似于:

    function checkEnter()
    {
    if(event)
    {
    if(evnet.keyCode == 13) //ur code
    }
    else if(evt)
    {
    if(evt.keyCode == 13) //ur code
    }
    } 
    

    【讨论】:

    • 你如何建议检测它是从哪里调用的?它很可能被埋在某个地方的某个子控件中。
    • 有点尴尬,但是...设置一个全局js变量。每当控件获得焦点时,将此变量设置为 controlID。
    【解决方案2】:

    我在这里提供了 2 个示例,第一个使用 jQuery,第二个使用老式 javascript。

    jQuery

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    <script language="javascript" type="text/javascript">
        $("document").ready(function(){
            $(".searchBox").keypress(function(e){
                if (e.keyCode == 13)
                    //add code here
    
            });
        });
    </script>
    
    <div class="searchBox">
        <input type="text" name="searchText"/>
        <input type="submit" value="search now" />
    </div>
    

    纯javascript

    在表单周围的 div 上使用“onkeypress”操作之前,我已经这样做了。这已在 IE7、Firefox3 和 Chrome 中进行了测试。

    这是一个例子:

    <div id="searchBox" onkeypress="return clickButton(event,'btnSearch')">
        <input name="searchText" type="text" id="searchText"  />
        <input type="button" name="btnSearch" value="Search" id="btnSearch" onClick="SubmitAction()" /> 
    </div>
    
    
    <script type="text/javascript" language="javascript"> 
        function SubmitAction()
        {
            alert('button clicked');
        }
    
        function clickButton(e, btId){ 
              var bt = document.getElementById(btId);      
              if (typeof bt == 'object'){ 
                    if(navigator.appName.indexOf("Netscape")>(-1)){ 
                          if (e.keyCode == 13){ 
                                bt.click(); 
                                return false; 
                          } 
                    } 
                    if (navigator.appName.indexOf("Microsoft Internet Explorer")>(-1)){ 
                          if (event.keyCode == 13){ 
    
                                bt.click();
                                event.cancelBubble = true; 
                                return false; 
                          } 
                    } 
              } 
        }
    </script> 
    

    您可能需要对其进行编辑以使其在所有浏览器中完全兼容,但您应该从中获得灵感。本质上,当这个 div 被聚焦时,任何按键都会调用 clickButton() 函数。正如其他答案所提到的,13 的 e.keyCode 代表 Enter 按键。

    【讨论】:

    • 如果链接是 webforms 应用程序中的 asp.net 控件,这会受到什么影响?
    • 此代码旨在捕获当焦点设置在页面上的
      内时发生的所有回车键按下。您将使用 jQuery 或本机 javascript 来操作您想要的默认按钮/链接。在 jQuery 中,我认为你会输入 $('#yourASPNETGeneratedButtonId').click();。虽然我不怎么使用 jQuery,所以我建议你查一下,而不是相信我的话。
    【解决方案3】:

    我添加了面板控件,它在我的身上运行良好。

    <asp:Panel ID="panSearch" runat="server" 
           DefaultButton="btnSearch2" Width="100%" >
        <table width="100%">
    
        <tr>
         <td>First Name</td>
         <td ><asp:TextBox ID="txtboxFirstName2" 
               runat="server" ></asp:TextBox></td>
        </tr>
    

    你也可以通过this link

    【讨论】:

      猜你喜欢
      • 2020-11-22
      • 2017-07-16
      • 2022-01-21
      • 1970-01-01
      • 2012-12-05
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多