文本框只显示数字键盘和小数点
HTML代码:
<input type="number" step="any" pattern="[0-9]*" inputmode="numeric" id="myInput">
JavaScript代码:
var myInput = document.getElementById("myInput"); // 监听focus事件,在获取焦点时设置inputmode为decimal myInput.addEventListener("focus", function() { myInput.setAttribute("inputmode", "decimal"); }); // 监听blur事件,在失去焦点时设置inputmode为numeric myInput.addEventListener("blur", function() { myInput.setAttribute("inputmode", "numeric"); });
上述代码主要依靠HTML5新增的inputmode属性实现了文本框只显示数字键盘和小数点的功能。在移动端,当该文本框被选中(获取焦点)时,inputmode被设置为decimal,此时弹出的键盘会包含数字键盘和小数点。当移动端的文本框失去焦点时,inputmode被设置为numeric,此时键盘会恢复为普通的数字键盘。此外,为了确保小数点可以正常工作,我们还需要在HTML标签的type属性加上number和step属性加上any的值,以及pattern属性加上正则表达式[0-9]*以让输入框只能接受数字。