我们经常被产品要求,在移动端的web页面上的输入框输入密码时要弹出数字键盘,而不是全键盘,这个该怎么实现呢?

1.首先要弹出数字键盘,我们只能把input框的type从password改为tel

2.但经过第一步,输入的内容会变成明文,这时候也要星号显示,改怎么实现

经过一番研究,找到如下的实现方法:

 function setPass(e) {
var target = e.currentTarget,
idx = target.selectionStart,
val = $(target).val(),
nextval = $(target).next().val(),
maxLen = $(target).attr('maxlength') || 6,
single = val.slice(idx - 1, idx),
left = '',
right = '';
if (val.length == nextval.length) return;
if (val.length > nextval.length) { //添加
if (/\d/g.test(single)) { //如果是数字
left = nextval ? (nextval.slice(0, idx - 1) + single) : single;
right = nextval.slice(idx - 1, maxLen);
}
if (/\D/g.test(single)) { //如果是非数字字符
left = nextval ? nextval.slice(0, idx - 1) : '';
right = nextval.slice(idx - 1, maxLen);
}
}
if (val.length < nextval.length) { //删除
left = nextval ? nextval.slice(0, idx) : '';
right = nextval.slice(idx + 1, maxLen);
}
val = (left + right).replace(/\d/g, "●");
if (!val) {
$(target).next().val(left + right);
} else {
$(target).val(val).next().val(left + right);
} }

当输入框的input事件触发的时候调用以上方法

<input type='tel' id='psd'>

document.getElementById('psd').onclick=setPass;

效果如下

这里有两个input,为什么一个输入框要有两个input呢?因为第一个是用来触发setPass事件的,把用户输入的字符转换成星号显示,第二个才是真正用来提交数据的(第二个得隐藏)

js输入密文弹出数字键盘的更多相关文章

  1. [HTML5]移动开发不同手机弹出数字键盘问题

    这里还是先那么先交代一下遇到的问题.其实无论是tel还是number都不是完美的:type="tel"优点是iOS和Android的键盘表现都差不多缺点是那些字母好多余,虽然我没有 ...

  2. Android使用Fragment定义弹出数字键盘

    fragment主布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln ...

  3. android开发之使edittext输入弹出数字软键盘。亲测可用。手机号登陆注册常用。

    <EditText android:id="@+id/edit_digit_input" android:layout_width="wrap_content&qu ...

  4. android EditText设置弹出数字输入法键盘

    <EditText      android:id="@+id/edit_digit_input"      android:layout_width="wrap_ ...

  5. Xcode6.1模拟器ios8.1模拟器不能弹出虚拟键盘及虚拟键盘无法切换中文输入的解决办法

    1.不能弹出虚拟键盘的解决办法 模拟器菜单Hardware->Keyboard->Connect Hardware Keyboard取消选中,快捷键commad+shift+K 2.虚拟键 ...

  6. (原)android的alertdialog中加入edittext但是不弹出软键盘等问题的解决与原因

    摘要:alertdialog中加入edittext但是不弹出软键盘等问题网上有很多不管用的解决方案, 本文意在给出更有效的解决办法,并初步探究其原因 正文 在对话框中插入文本框是十分常见的需求 通常我 ...

  7. 手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法

    手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法 最近碰到Android微信内置浏览H5页面,因为其中的文本输入框(input)放置在靠近页面的中下方,点击文本框以后,则输入框会被弹出的手机 ...

  8. ios下input focus弹出软键盘造成fixed元素位置移位

    正常状态下 input focus软键盘弹出时 问题描述: 头部结构fixed,滚动到下部内容区域,input.textarea等focus弹出软键盘时,头部位置偏移被居中(该问题ios7 beta3 ...

  9. [Phonegap+Sencha Touch] 移动开发24 包wp8.1的App,弹出软键盘输入框聚焦实施后,无移动采收率方法来解决接口

    这种现象不仅是现在显示phonegap包sencha touch的wp8.1该程序将出现(只wp8.1,wp8正常).其他js我测试了几个框架(app framework, jquery mobile ...

随机推荐

  1. 命名规范 camel case, pascal case, hyphen

    2019-11-08  refer : https://ux.stackexchange.com/questions/43174/update-vs-modify-vs-change-create-v ...

  2. js判断是否是对象获取子窗体值

    判断是否是对象 Object.prototype.toString.call(obj) 装换为数组 Array.prototype.slice.call(obj) 父窗体获取值子窗体值$(functi ...

  3. JS基础_while循环

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Boost Graph Library materials

    Needed to compute max flow in a project and found the official document of BGL to be rather obscure, ...

  5. 使用WSGI创建REST接口

    问题 你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架. 解决方案 构建一个REST风格的接口最简单的方法是创建一个基于WSGI标准(PEP ...

  6. 常用的Java工具类——十六种

    常用的Java工具类——十六种 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选 ...

  7. 安装grafna已经grafna对接zabbix

    安装插件 grafana-cli plugins install alexanderzobnin-zabbix-app 重启grafna systemctl restart grafana-serve ...

  8. 重装系统失败后怎么用好系统U盘启动解决?

    很多朋友在第一次重装电脑系统时都会出现这样或那样的错误,导致重装系统后进不去系统,非常的被动.那么当我们遇到这种情况该怎么办呢?其实我们可以使用好系统U盘启动来解决重装系统后进不去的问题. 好系统U盘 ...

  9. 招商银行网银在Mac上装了插件仍然无法登录

    1 装完插件后,在登录页面重新载入插件,再次打开

  10. 05.Zabbix自动化监控

    1.Zabbix自动发现(被动) 网络发现官方手册 网络发现由两个阶段组成:发现discovery和动作actions 1.单击配置->自动发现->启动默认的Local network 2 ...