iPhone开发 - 如何显示数字键盘?

7

我正在开发一个移动网站,它不是原生的iPhone应用程序,而是一个简单的在c# asp.net中开发的m.somedomain.com网站。

目标: 点击文本框时,如何仅显示数字键盘?

注意: 该网站不是HTML5,并且不是原生应用程序内的Webview的一部分,而是一个独立的常规网站。

我的文本框是一个常规的asp.net文本框:

<asp:TextBox runat="server" CssClass="reference_input" Text="1234567"  />

3个回答

13

编辑: 我在这里找到了一个方法,你可以使用:

<input type="text" pattern="[0-9]*" />

来告诉Mobile Safari将数字键盘设置为默认,而不需要指定电话键盘。

编辑2 (来自下面的评论): 你还可以使用JavaScript强制进行数字输入:

<input type="text" pattern="[0-9]*" onKeypress="if(event.keyCode < 48 || event.keyCode > 57){return false;}" />


2
"\d*" 也可以作为另一种选择。 - macbirdie
谢谢!这个很完美,虽然我看到键盘上有ABC标志可以切换回字母,但是有没有办法也禁用或删除它,以便用户只能输入数字? - Murtaza Mandvi
@Murtaza 哎呀!这就是我复制和粘贴代码的后果。试试这个,看看它是否有效:<input type="text" pattern="[0-9]*" onKeypress="if(event.keyCode < 48 || event.keyCode > 57){return false;}" /> - mopsled
我知道我特别针对 iPhone 发布了这个问题 - 但是是否有类似的情况适用于 Android?我在 Android 上测试过,但那并没有起作用...? - Murtaza Mandvi
<input type="number"> 能行吗?这应该在 Android 2.2 及以上版本中支持。 - mopsled
显示剩余3条评论

4
如果您使用type="tel"而不是type="text",它将会弹出一个数字键盘。

我看到在之前的iOS版本中这个功能已经被移除了? - Murtaza Mandvi
它们自 iOS 3.1 起就可用了。当然在文档中有说明。 - macbirdie

0

对于Salesforce(不是HTML输入类型为“number”的情况),以下JavaScript代码应该使iPad、iPhone的数字键盘默认出现。(此解决方案同样适用于asp.net控件)

    <apex:page standardController="Account" >
    <head>
     <script type="text/javascript"> 
      function addLoadEvent(func)  
      { 
       var oldonload = window.onload; 
       if (typeof window.onload != 'function') 
       { 
         window.onload = func; 
       } 
       else 
       { 
         window.onload = function()  
        { 
          if (oldonload) 
           { 
             oldonload(); 
           } 
           func(); 
        } 
       } 
      }     

      addLoadEvent(function() 
      { 
       try{
          var ctl = document.getElementById('{!$Component.frm.txtNumeric}'); 
          type = document.createAttribute("type");
          type.nodeValue = "number";
          ctl.setAttributeNode(type);
         }catch(err)  
        {
        alert(err);
        }   
      }); 
     </script>
    </head>

    <body>
      <apex:form id="frm" >    
      This is a numeric input <apex:inputfield id="txtNumeric" value="{!account.name}" style="width:200px;"  /> 
      </apex:form>
    </body>

</apex:page>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接