5
votes

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"

3
What problems have you had with which versions of Firefox?Jukka K. Korpela
@JukkaK.Korpela Quite easy :) When using autocomplete="off", it still showed the dropdown with previously entered suggestions.Peter
you need to be more specific than that. When I use autocomplete="off" in Firefox, it does not show suggestions. Are you sure you don’t have e.g. an autofiller add-on installed? Does the code in the question reproduce the issue?Jukka K. Korpela
@JukkaK.Korpela Thanks for the tip! When I turn my addons off, it does work. That leaves the form issue.Peter

3 Answers

8
votes

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');
    });
});
3
votes

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?

-1
votes

IE: autocomplete

Firefox, Chrome, Opera: disableautocomplete

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