延迟的密码输入屏蔽,javascript/jquery中的android风格
password input masking with delay, android style in javascript/jquery
让我首先说我的任务已经完成。但我正在努力了解它是如何工作的,有一件事让我感到困惑。换句话说,我偶然发现了答案。
我的任务很简单:在输入框中,通过在延迟后将每个字符更改为*,在用户键入时屏蔽输入。这是安卓手机处理屏蔽输入的方式,与iPhone略有不同。
我使用了jQuery/javascript和regex的组合。我的工作代码:
$('.room_input').focus(function () {
currentFocus = $(this);
});
$('.key').click(function () {
setTimeout(function () {
currentFocus.val(currentFocus.val().replace(/[^'*]/, '*'));
}, 2000);
});
它非常简单,而且效果很好。按下每个键后,2秒钟后变为*每个按键都有自己的定时器。但有一件大事我不明白。当setTimeout的回调触发时,上面的代码似乎会将文本框的整个内容设置为*s。因为上面的"替换"会将值的全部内容替换为非*的任何字符。
但事实并非如此。每个键在单击后2秒后都会发生变化(应该如此)。为什么?我想这可能是正则表达式——它只会更改找到的第一个匹配项吗?我只是回答了我自己的问题吗?
更新:我做到了。这是正则表达式。它只替换字符串中的第一个匹配字符。我想这可能与单线程问题有关。。。和往常一样,我把一个问题做得比实际困难得多。:)
每次单击键都会添加一个字符,然后启动一个计时器,稍后将第一个非星号变为星号。这比你想象的要简单得多。
相关文章:
- jquery中的文本框验证
- 是否可以禁用jquery中的单个单选按钮
- 禁用jQuery中的下拉列表
- Javascript/jQuery中的并行Ajax调用
- 如何从javascript/jquery中的复选框中获取布尔值
- JQuery中的活动搜索栏
- jquery中的复选框依赖项
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 将值动态绑定到jquery中的切换按钮
- 如何使jQuery中的悬停函数单独应用于数据库映像
- jQuery中的attr()是否强制小写
- position 是 JavaScript 或 jQuery 中的一个数组
- 存储JQuery中的选项值
- 如何在JQuery中的.html()方法中包含fadeneffect
- 比较jquery中的两个输入
- jQuery中的状态管理是什么
- 如何从javascript/jquery中的多个复选框中获取附加值
- jquery中的PHP代码不起作用
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交