Peter
Peter

Reputation: 9113

How to disable autocomplete for all major browsers

How do you disable Autocomplete in the major browsers for a specific input and/or the complete form.

I found this solution:

<input type="text" name="foo" autocomplete="off" />

However, this does not seem to work in all browsers. I've had problems in firefox for instance.

Edit:

My firefox issue has been resolved. That leaves the following: Can I disable autocomplete on a form or do I have to give every input autocomplete="off"

Upvotes: 5

Views: 5999

Answers (4)

Furkan
Furkan

Reputation: 85

I found this one. It hides on chrome, edge and opera

<form autocomplete="off">
<input role="presentation" />
</form>

Upvotes: 0

Yun Lu
Yun Lu

Reputation: 1

IE: autocomplete

Firefox, Chrome, Opera: disableautocomplete

<input type="text" autocomplete="off" disableautocomplete id="number"/>

Upvotes: -2

akxlr
akxlr

Reputation: 1182

You could try manually clearing text fields on page load with javascript, for example:

window.onload = function() {
    elements = document.getElementsByTagName("input");
    for (var i=0; i<elements.length; ++i) {
        elements[i].value = "";
    }
};

This might not work if it's executed before the autofill. Another option is to generate part of the name attributes for your inputs randomly each time the page is rendered (and strip them out when the server handles the submit), then the browser won't try to autocomplete.

See also Is autocomplete="off" compatible with all modern browsers?

Upvotes: 3

123
123

Reputation: 8951

Autocomplete should work with the following <input> types: text, search, url, tel, email, password, datepickers, range, and color.

But alas, you could try adding autocomplete='off' to your <form> tag instead of the <input> tag, unless there's something preventing you from doing that.

If that doesn't work, you could also use JavaScript:

if (document.getElementsByTagName) {
    var inputElements = document.getElementsByTagName(“input”);
    for (i=0; inputElements[i]; i++) {
        if (inputElements[i].className && (inputElements[i].className.indexOf(“disableAutoComplete”) != -1)) {
            inputElements[i].setAttribute(“autocomplete”,”off”);
        }
    }
}

Or in jQuery:

$(document).ready(function(){
    $(':input').live('focus',function(){
        $(this).attr('autocomplete', 'off');
    });
});

Upvotes: 8

Related Questions