Javascript 键入时将密码设置为变量

Javascript 键入时将密码设置为变量,javascript,jquery,html,Javascript,Jquery,Html,试图避免任何浏览器关于自动完成,密码建议等的内容 同时保持显示/隐藏字母功能 其思想是将password作为变量保留,而不管show/hide状态如何 在下面的代码中,如果用户按退格或删除键,则会出现问题。在这种情况下,整个概念就被粉碎了 有什么帮助吗 var pass=“”; $('#inpass')。在('input',function()上{ 如果(!$('#checka')。是(':checked')){ 设a=$(this.val(); 设b=a.substr(-1); 通过+=b;

试图避免任何浏览器关于
自动完成
密码建议
等的内容

同时保持
显示/隐藏字母
功能

其思想是将
password
作为变量保留,而不管
show/hide
状态如何

在下面的代码中,如果用户按
退格
删除
键,则会出现问题。在这种情况下,整个概念就被粉碎了

有什么帮助吗

var pass=“”;
$('#inpass')。在('input',function()上{
如果(!$('#checka')。是(':checked')){
设a=$(this.val();
设b=a.substr(-1);
通过+=b;
设c=a.替换(/.$/,“*”);
$(此).val(c);
控制台日志(pass);
}
});




显示添加的字母
检查是删除还是添加

var pass=“”;
String.prototype.replaceAt=函数(索引,替换){
返回this.substr(0,索引)+replacement+this.substr(索引+replacement.length);
}
功能设置CaretPosition(ctrl,pos){
如果(ctrl.setSelectionRange){
ctrl.focus();
控制设置选择范围(位置,位置);
}else if(ctrl.createTextRange){
var range=ctrl.createTextRange();
范围。塌陷(真);
range.moveEnd('字符',位置);
range.moveStart('character',pos);
range.select();
}
}
$('#inpass')。在('input',function()上{
var el=document.getElementById('inpass');
让caretStart=el.selectionStart;
设a=$(this.val();
var deleteLength=pass.length-a.length;
var addLength=deleteLength*-1;
设b=a.substr(caretStart-addLength,addLength);
如果(删除长度>0){
pass=pass.substr(0,caretStart)+pass.substr(caretStart+deleteLength,pass.length-1);
}否则{
如果(caretStart0){
设c=a.replaceAt(caretStart-addLength,'*'。repeat(addLength));
$(此).val(c);
}
}
设置CaretPosition(el,caretStart);
控制台日志(pass);
});




显示字母
为什么不阻止粘贴?如果用户使用箭头键更改上一个字符,而不仅仅是最后一个字符,那么整个概念也会失败。没有明白你的意思,为什么不使用type=“password”这样你就试过了答案,发现它们不再有效?如果有效,这是一个真正的解决方案。就你目前的问题来看,它太宽泛了。正如评论中提到的,您的代码存在多个问题。勾选“显示字母”复选框和使用光标时会出现奇怪的情况keys@Amstel,几乎是完美的,你在freedomn的
通知中有什么解决方案吗?@puerto我已经更新了代码以处理freedom-m的评论