【问题标题】:how to do autocomplete="off" at form level in JSF如何在 JSF 的表单级别执行 autocomplete="off"
【发布时间】:2011-03-13 18:59:22
【问题描述】:

如何在 JSF 中的表单级别执行 autocomplete="off"?

【问题讨论】:

    标签: jsf


    【解决方案1】:

    最好和最简单的方法是:

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

    如果您还没有xmlns:f="http://xmlns.jcp.org/jsf/core",请不要忘记将head 属性添加到您的属性中。

    为什么?

    1. 因为如果您的页面中某处有需要更新/呈现表单的 ajax 事件,它不会丢失 autocomplete 属性。
    2. 因为它看起来很性感(JS 方式看起来很丑)。

    提示:您可以将f:passThroughAttribute 用于每个不具有较新 HTML 规范的任何特定属性的 JSF 元素。

    【讨论】:

    • 遗憾的是,这只适用于 JSF 2.2。如果支持的话,仍然是迄今为止最好的解决方案。
    【解决方案2】:

    使用 Javascript 的真正快速解决方案是(假设您已加载 jQuery):

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

    如果你想继续使用 vanilla 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 如果不是,您最好使用第一个解决方案。

    【讨论】:

    • 在使用 jQuery 时,如果您的表单 id 包含 ':' 字符,您将得到不受支持的伪错误。如果是这种情况,您可以使用 $(document.getElementById( 'parentElement:formElement').attr("autocomplete", "off"); 。有关详细信息,请参阅stackoverflow.com/questions/16077280/…
    • 对我来说最好的可行解决方案。使用 jsf 2.0
    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 2014-12-29
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2014-11-07
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多