11

how to do autocomplete="off" at form level in JSF?

Isha
  • 111
  • 1
  • 1
  • 3

2 Answers2

13

The best and easiest way of doing this is this:

<h:form id="myForm">
    <f:passThroughAttribute name="autocomplete" value="off"/>
    ...
</h:form>

Don't forget to add xmlns:f="http://xmlns.jcp.org/jsf/core" to your head attribite if you don't have already.

Why?

  1. Because if you have an ajax event somewhere in your page that needs to update/render your form, it will not loose the autocomplete attribute.
  2. Because it looks sexy (JS way looks ugly).

Tip: You can use f:passThroughAttribute for every JSF element which does not have any specific attribute of newer HTML specifications.

Mateus Viccari
  • 7,389
  • 14
  • 65
  • 101
10

A real quick solution with Javascript would be (assuming you have got jQuery loaded):

<script>
    $(function(){
        $("#form").attr("autocomplete", "off");
    });
</script>

If you want to stay with vanilla Javascript, you can do:

<script>
    document.addEventListener("DOMContentLoaded", function(){
        document.getElementById("form").setAttribute("autocomplete", "off");
    });
</script>

Note: For the second solution make sure your browser is covered here: https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/DOMContentLoaded#Browser_compatibility If not you might be better off using the first solution.

Felix
  • 4,213
  • 1
  • 21
  • 27
  • While using jQuery, if your form id contains ':' character you'll get unsupported pseudo error. You can use $(document.getElementById( 'parentElement:formElement').attr("autocomplete", "off"); if this is the case. See http://stackoverflow.com/questions/16077280/uncaught-error-syntax-error-unrecognized-expression-unsupported-pseudo for details – vahapt Jul 31 '13 at 10:52
  • best viable solution for me. using jsf 2.0 – Fritz Jan 05 '17 at 08:38