移动端开发input标签调用数字键盘

先上代码:

 

maxlength属性规定输入内容的最大长度,有些浏览器会出现把type设置为number后maxlength就失效了,微信浏览器我测试的时候还没有遇到这种情况,为了预防万一我们可以加上以下这行代码:
οninput="if(value.length>6)value=value.slice(0,6)" /*存在浏览器差异*/

type="text"和type=“number”亲测在微信浏览器ios端中能调出数字键盘,但在安卓端中type="text"对某些手机自带输入法无效。


在开发过程中我遇到最棘手的问题不是如何调用手机数字键盘,而是如果要把当前这个input用作密码用途的话如何将输入的内容变成“·”,最后,我选择通过改变input的type属性来实现效果,通过oninput 事件触发,当input中有新内容输入时,触发一次,代码如下:

  document.getElementById("pp").οninput=function(){
                 document.getElementById("pp").setAttribute("type", "password");
             };
但是如果我们在完成一次输入后,重新点击input时调用的却不是纯数字键盘,因为此时我们的input属性已经变成了password,但是如果我们在上面的代码前加上一个对input的focus触发事件,将input的属性重新修改成number可不可以呢?经过自己的几次实践,发现还是不能调用出纯数字键盘,原因是当input标签属性已经为password时无论是focus事件或者是onclick事件触发时,就会调用手机的键盘,此时input的属性还是password。

解决方法:

用一个div通过绝对定位或者相对定位遮盖input(微信浏览器如果用float浮动的话容易发生点击穿透事件,即:点击表层会触发底层的点击事件),相当于给input输入框上面添加了一层罩。通过这个“罩”的点击来触发改变input属性的事件,完整代码如下:

*请输入密码
忘记密码?
确定







你可能感兴趣的:(移动端)