【问题标题】:HTML Input field force numbersHTML 输入字段强制数字
【发布时间】:2010-09-17 16:04:06
【问题描述】:

是否可以创建一个输入字段,将默认输入字符集设置为 手机 上的数字(因此 NUMERICAL KEYBOARD 弹出)?
例如,为了更容易在 HTML 表单中输入电话号码。

【问题讨论】:

    标签: mobile user-input wml


    【解决方案1】:

    为了使输入数字更容易,请使用<input type="number">。要更轻松地输入电话号码,请使用<input type="tel">。并非所有手机都支持它们,但 iPhone 至少会默认为您提供数字小键盘,而不是普通键盘。请参阅the specDive Into HTML5 了解更多信息。

    【讨论】:

    【解决方案2】:

    可以在“手机”上限制进入 手机表单入口使用

    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
    "http://www.wapforum.org/DTD/wml_1.1.xml">
    

    可以使用 format="*N" 限制此处的输入

    【讨论】:

      【解决方案3】:

      您可以使用&lt;input type='tel'&gt;。这是一个新的 HTML5 功能。旧版浏览器只会默认使用文本输入字段。

      【讨论】:

        【解决方案4】:

        因此您可以使用type="tel"type="numbers"

        不同的是,一个人尝试调出您的电话拨号键盘,而另一个人只是切换到您的手机键盘的数字输入。

        【讨论】:

        【解决方案5】:

        请参阅我使用 JavaScript 语言在您的网页上对文本输入元素的值进行跨浏览器过滤的项目:Input Key Filter。代码示例:

        <!doctype html>
        <html xmlns="http://www.w3.org/1999/xhtml" >
        <head>
            <title>Input Key Filter Test</title>
        	<meta name="author" content="Andrej Hristoliubov anhr@mail.ru">
        	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        	
        	<!-- For compatibility of IE browser with audio element in the beep() function.
        	https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible -->
        	<meta http-equiv="X-UA-Compatible" content="IE=9"/>
        	
        	<link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css">		
        	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script>
        	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script>
        	
        </head>
        <body>
        	<h1>Phone number</h1>
        	Please type a phone number in the +**(***)***-**-** format. Example: +1(23)456-78-90
        	<br/>
        	<input id="PhoneNumber" value="+()--">
        	<script>
        		function getArrayPhoneNumber(value){
        			if (typeof value == 'undefined')
        				value = document.getElementById("PhoneNumber").value;
        			return value.match(/^(\+?\d*)\((\d*)\)(\d*)-?(\d*)-?(\d*)$/);
        		}
        		
        		function getPhoneNumber(){
        			var arrayPhoneNumber = getArrayPhoneNumber();
        			if(!arrayPhoneNumber)
        				return "";
        				
        			var phoneNumber = arrayPhoneNumber[1] + arrayPhoneNumber[2] + arrayPhoneNumber[3] + arrayPhoneNumber[4] + arrayPhoneNumber[5];
        			return phoneNumber;
        		}
        		
        		inputKeyFilter.Create("PhoneNumber", function(event){//onChange event
        				inputKeyFilter.RemoveMyTooltip();
        				
        				var arrayPhoneNumber = getArrayPhoneNumber();
        				if(!arrayPhoneNumber || (arrayPhoneNumber.length != 6)){
        					document.getElementById("NewPhoneNumber").innerHTML = "Incorrect format of the phone number";
        					return;
        				}
        				
        				var elementNewPhoneNumber = document.getElementById("NewPhoneNumber");
        				var phoneNumber = getPhoneNumber();
        				if(inputKeyFilter.isNaN(phoneNumber, this)){
        					elementNewPhoneNumber.innerHTML = "";
        					return;
        				}
        				elementNewPhoneNumber.innerHTML = phoneNumber;
        			}
        			, function(elementInput, value){//customFilter
        				var arrayPhoneNumber = getArrayPhoneNumber(value);
        				if(arrayPhoneNumber == null){
        					inputKeyFilter.TextAdd(isRussian() ?
        							"Недопустимый формат телефонного номера. Например: +1(234)56-78-90"
        							: "Incorrect format of the phone number. Example: +1(234)56-78-90"
        						, elementInput);
        					if(elementInput.value == "")
        						elementInput.value = elementInput.defaultValue;
        					return false;
        				}
        				return true;
        			}
        			
        			//onblur event. Use this function if you want set focus to the input element again if input value is NaN. (empty or invalid)
        			, function(event){ inputKeyFilter.isNaN(parseInt(getPhoneNumber()), this); }
        		);
        	</script>
        	 New phone number: <span id="NewPhoneNumber"></span>
        </body>
        </html>

        另见我的页面"Custom filter:" example of the input key filter

        【讨论】:

          【解决方案6】:

          这是一个使用 Javascript 的示例。这将只允许来自键盘顶部的小键盘/数字和格式化程序(shift/backspace/etc)的数字。您还可以考虑为onchange 事件添加一个setTimeout(),超时几秒钟,以检查是否有人将非数字粘贴到字段中以及服务器端验证。

          示例

          http://jsfiddle.net/vce9s/

          【讨论】:

            【解决方案7】:

            为了我对“您可以使用type="tel"type="numbers"”的测试。 在 iPhone 上,type="tel" 调出仅数字键盘(如电话),type="numbers" 调出数字键盘,切换为数字和符号,因此两者都有效,仅取决于您的应用程序。对我来说,我只需要数字,所以我使用 type="tel" 以方便使用,效果很好!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-10-30
              • 1970-01-01
              • 1970-01-01
              • 2013-01-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-04-03
              相关资源
              最近更新 更多