js输入密文弹出数字键盘

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

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

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

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

 1 function setPass(e) {
 2             var target = e.currentTarget,
 3                 idx = target.selectionStart,
 4                 val = $(target).val(),
 5                 nextval = $(target).next().val(),
 6                 maxLen = $(target).attr(‘maxlength‘) || 6,
 7                 single = val.slice(idx - 1, idx),
 8                 left = ‘‘,
 9                 right = ‘‘;
10             if (val.length == nextval.length) return;
11             if (val.length > nextval.length) { //添加
12                 if (/\d/g.test(single)) { //如果是数字
13                     left = nextval ? (nextval.slice(0, idx - 1) + single) : single;
14                     right = nextval.slice(idx - 1, maxLen);
15                 }
16                 if (/\D/g.test(single)) { //如果是非数字字符
17                     left = nextval ? nextval.slice(0, idx - 1) : ‘‘;
18                     right = nextval.slice(idx - 1, maxLen);
19                 }
20             }
21             if (val.length < nextval.length) { //删除
22                 left = nextval ? nextval.slice(0, idx) : ‘‘;
23                 right = nextval.slice(idx + 1, maxLen);
24             }
25             val = (left + right).replace(/\d/g, "●");
26             if (!val) {
27                 $(target).next().val(left + right);
28             } else {
29                 $(target).val(val).next().val(left + right);
30             }
31
32         }

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

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

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

效果如下

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

原文地址:https://www.cnblogs.com/wxcbg/p/10880713.html

时间: 2024-08-07 00:51:29

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

移动开发不同手机弹出数字键盘问题

最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 type="tel",不过一直觉得九宫格的电话号码键盘上的英文字母太碍事了.于是想要尝试其它的实现方案,最终的结论却令人沮丧.不过也趁机详细了解了下pattern这个属性. type="tel" 和 type="number" 的区别 这里还是先那么先交代一下最初遇到的问题.其实无论是tel还是number都不是完美的: type="tel" 优点是iO

原生js写个简单的数字键盘(by vczero)

一.起因 最近支付的同事说,数字键盘有些问题:在移动设备上有时候比较难出现点(.) 和数字在一起的格局:因此,考虑到这种情况,就建议手写个模拟键盘了.花了一晚上的时间,写了个简单的键盘,基本能用.考虑到有的开发者没有使用juqery,就使用原生的js了. Github地址:https://github.com/vczero/keyboard 二.截图如下 三.体验地址(需要点击input才能弹出数字键盘的哦) URL: http://vczero.github.io/num_key/index.

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

<EditText      android:id="@+id/edit_digit_input"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:digits="1234567890."      android:singleLine="true"     

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

1.不能弹出虚拟键盘的解决办法 模拟器菜单Hardware->Keyboard->Connect Hardware Keyboard取消选中,快捷键commad+shift+K 2.虚拟键盘无法切换中文输入法的解决办法 首先.模拟器设置->通用->键盘->键盘->添加新键盘->简体中文(英文环境下:Settings->General->Keyboard->Keyboards->Add New Keyboard->Chinese(Sim

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

摘要:alertdialog中加入edittext但是不弹出软键盘等问题网上有很多不管用的解决方案, 本文意在给出更有效的解决办法,并初步探究其原因 正文 在对话框中插入文本框是十分常见的需求 通常我们选择在代码中创建edittext对象 这个时候就需要在代码中给edittext设置输入属性了 但是经常发现设置的属性不起作用,甚至都不弹出软键盘(虽然实体键盘可以输入) 问题的解决方案有很多种,这里介绍一种我比较常用的方法: inputPassEditText.setInputType(Input

Cocos2d-X中使用CCTextFieldTTF的简单应用显示文本和弹出软键盘

 学了几天Cocos2d-X后今天终于可以试试Cocos2d-X的跨平台开发了,由于条件的限制,我只会测试Cocos2d-X在Android平台上的开发,今天就以一个简单的文本测试Android上的效果,需要用到CCTextFieldTTF类,CCTextFieldTTF是一个显示文本控件的类用于输入文本和现实文本类似于Windows编程中的Static控件和Edit控件 程序实例:使用TextFieldTTF类创建一个文本,触摸文本弹出软键盘 首先创建一个TextFieldTTF.h的头文

[Phonegap+Sencha Touch] 移动开发24 打包wp8.1的App,运行时输入框聚焦弹出软键盘之后,界面上移而不恢复原位的解决办法

这个现象只出现在phonegap打包sencha touch的wp8.1程序会出现(仅wp8.1,wp8正常),其它js框架我测试了几个(app framework, jquery mobile),好像没有这个问题. 我来描述一下这个现象: 1.运行phonegap打包的wp8程序,打开一个有输入框的界面,如下图: 2.点击输入框,使其弹出软键盘,界面会上移,如下图: 3.点返回键隐藏软键盘(或者点击界面上其它地方隐藏软键盘),此时界面不恢复原位,如下图: 我的一些研究结果: 1.这种现象只出现

禁止移动端input弹出软键盘

在做三级联动,或者一些时间插件的时候总是弹出软键盘,用下面的方法就可以禁用掉,废话不多说直接上代码. HTML代码 <div class=""> <div> <input type="text" id="disable1" class="" placeholder=""/> </div> <div> <input type="tex

打开页面默认弹出软键盘,同时兼容iOS和Android

// 示例1 open_soft_keyboard({ input: "#username" }); // 示例2 open_soft_keyboard({ input: 'input[value=""]' }); /** * 默认打开软键盘 * @param options{ * input: '#nickname' // 容器节点 * } * @author 蔡繁荣 * @version 1.0.3 build 20151226 */ function open