【问题标题】:Chome and IE not offering to save password after input type is changed by script输入类型被脚本更改后 Chrome 和 IE 不提供保存密码
【发布时间】:2015-09-09 19:10:24
【问题描述】:

我有一个表格,其中包含:

 <input type="password" id="password" />

我希望在其中暂时显示一些可读的文本,因此:

$('#password').prop('type', 'text');

但是当类型随后更改回密码时说:

$('#password').focus(function () {
    $('#password').prop('type', 'password');
});

然后在提交表单时,“...记住密码?”在 Chrome 和 IE 中无法启动对话框(在 Firefox 中有效)。

如果初始转换为文本类型被延迟,例如

setTimeout(function () {
    $('#password').prop('type', 'text');
}, 1);

一切都在所有浏览器中按要求运行。

发生了什么事?

【问题讨论】:

    标签: javascript jquery google-chrome internet-explorer passwords


    【解决方案1】:

    我怀疑浏览器没有提供保存密码作为安全措施或错误。

    一种更可靠的解决方案(并且绕过 IE8 中的安全限制)是在隐藏的 DOM 中立即创建一个文本字段。当您想要切换显示时,请同时切换字段的可见性以及 name,以便服务器端代码平等对待这两个字段。

    以下是您如何实现此目的的简单版本:

    <input type='text' id="thisPasword" name="hello" />
    <input type='text' id="thisText" name="helloTmp" style="display:none"/>
    
    function toggle() {
        var both = $("#thisText,#thisPassword"),
            hidden = both.filter(":hidden"),
            visible = both.filter(":visible");
    
        hidden.attr("name", "hello").val(visible.val()).show();
        visible.attr("name", "helloTmp").hide();    
    }
    

    我的组织已经成功实施了一个类似这样的解决方案,它适用于所有浏览器。

    【讨论】:

      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多