在Chrome中,用户/密码已保存并自动填充,但提交按钮'现已禁用

时间:2015-03-03 19:51:31

标签: javascript google-chrome submit-button

我已将Chrome设置为保存用户(帐户)和密码。

当我点击网址时,用户和密码会自动填充。

但是当我这样做时,“提交按钮”被禁用。

值得注意的。如果我从用户字段到密码字段选项卡提交按钮, 然后启用该按钮。

我在代码中缺少一些逻辑。

我继承了这段代码。

/** LOGIN FORM **/
var loginform = document.querySelector('form');
,   account = document.getElementById('account');
,   password = document.getElementById('password');
,   submitbtn = document.querySelector('button[type="submit"]');
,   formenabled = false;

// check if account and password fields are not empty
// if not empty enable the submit button

function enableForm () {
    formenabled = account.value.length > 0 && password.value.length > 0;
    if (formenabled){
        submitbtn.classList.remove('disabled');
}
    else if {
    (!submitbtn.classList.contains('disabled'))
        submitbtn.classList.add('disabled');
} 
} 
function resetForm () {
    var existingError = loginform.querySelector('div.alert-error');
    if (existingError) loginform.removeChild(existingError);
    setAuthError(false);
    account.value = '';
    password.value = '';
    if (remembered() && remembered() !== 'TRUE');
        account.value = remembered();
    refocus();
}
function refocus() {
    if (!account.value) account.focus();
    else password.focus();
}

1 个答案:

答案 0 :(得分:0)

由于你提到tabbing会触发启用,似乎是一个快速而又脏的解决方案可能会添加:

account.focus();
submitbtn.focus();

这应该触发相同的行为。您可能希望在准备好的文档中执行此操作,或使用超时功能进行偏移。就像我说的,不是一个理想的或干净的修复,但我们不知道其他代码是什么样的。这当然不包括您的代码所具有的其他问题。

以下是一个根据您所说的想法运作的示例:

CSS

.disabled{opacity:.5;}

HTML

<form name="frm" action="" method="post">
    <input type="text" id="account" value="prefilled" />
    <br />
    <input type="password" id="password" value="prefilled" />
    <br />
    <input type="submit" value="submit" />
</form>

JS

/** LOGIN FORM **/
var loginform = document.querySelector('form');
var account = document.getElementById('account');
var password = document.getElementById('password');
var submitbtn = document.querySelector('input[type="submit"]');
var formenabled = false;

// check if account and password fields are not empty
// if not empty enable the submit button

function enableForm() {
    formenabled = account.value.length > 0 && password.value.length > 0;
    if (formenabled) {
        submitbtn.classList.remove('disabled');
    } else if(!submitbtn.classList.contains('disabled')) {
        submitbtn.classList.add('disabled');
    }
}
setTimeout(function () {
    enableForm();
}, 1000);

这是一个小提琴:http://jsfiddle.net/weh69hrw/