2010-07-09 48 views

回答

5

不幸的是,標準<h:form>組件沒有autocomplete屬性。您必須在每個輸入的基礎上關閉它,或者編寫UIForm的自定義渲染器。

目前有一個公開的問題,它要求將此屬性添加到<h:form>JSF spec issue 418。目前,它計劃用於JSF 2.2。

與此同時,您可以使用OmniFaces Html5RenderKit獲得對<h:form>組件的autocomplete="off"的支持。

7

使用JavaScript真正快速的解決方案將是(假設你已經得到的jQuery加載):

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

如果你想留在香草的Javascript,你可以這樣做:

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

注意:對於第二種解決方案,請確保您的瀏覽器在這裏覆蓋:https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/DOMContentLoaded#Browser_compatibility 如果不是,您可能會更好使用第一個解決方案。

+0

使用jQuery時,如果您的表單ID包含':'字符,您將得到不受支持的僞錯誤。你可以使用$(document.getElementById('parentElement:formElement')。attr(「autocomplete」,「off」);如果是這種情況,請參見http://stackoverflow.com/questions/16077280/uncaught-error- syntax-error-unrecognized-expression-unsupported-pseudo – vahapt 2013-07-31 10:52:11

+0

使用jsf 2.0 – Fritz 2017-01-05 08:38:24

6

這樣做的最好的,最簡單的方法是這樣的:

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

不要忘記添加xmlns:f="http://xmlns.jcp.org/jsf/core"head attribite如果你沒有了。

爲什麼?

  1. 因爲如果你在你的頁面需要更新/渲染你的形式某處有一個AJAX事件,也不會鬆動autocomplete屬性。
  2. 因爲它看起來很性感(JS方式看起來很醜)。

提示:您可以使用f:passThroughAttribute對於不具備的新的HTML規範的任何特定屬性的每個JSF元素。

+1

不幸的是,這隻適用於JSF 2.2。 – Roben 2016-09-05 14:08:49

相關問題