【问题标题】:Command button does not submit on "enter" press only in IE < 9仅在 IE < 9 中按“输入”时命令按钮不提交
【发布时间】:2012-03-03 09:03:17
【问题描述】:

我有 2 个 &lt;h:form&gt; 元素相互跟随(不是一个在另一个中),例如:

<h:form id="innerHeaderForm1">
    <h:inputText value="#{searchBar.eventname}" />
    <h:commandButton action="#{searchBar.search1}" value="click1"/>
</h:form>
<h:form id="innerHeaderForm2">
    <h:inputText id="last" value="#{searchBar.personname}"/>
    <h:commandButton action="#{searchBar.search2}" value="click2"/> 
</h:form>

这很好用。我遇到的问题是,在 IE 8(并且我假设其他旧版本)中,当我在第一个表单中并且我按下键盘上的“输入”键时,表单没有提交。页面重新加载,但甚至没有调用#{searchBar.search1}

所有这一切的奇怪之处在于,这在第二种形式中运行良好。我没有收到错误消息,也没有收到来自浏览器的任何反馈。

在我的支持 bean 中,我有类似的东西:

public String search1() {
    System.out.println("submitting form1");
    return "success";
}

public String search2() {
    System.out.println("submitting form2");
    return "success";
}

当使用“回车”键时,我什至没有进入 backing bean。

但是:当我“点击”提交按钮(用鼠标)时,一切正常。

对此的任何见解将不胜感激!

【问题讨论】:

    标签: java forms internet-explorer jsf jsf-2


    【解决方案1】:

    如果表单只有一个 &lt;input type="text"&gt; 字段,这是 MSIE 特有的异常。唯一的解决方法是添加另一个被 CSS display: none; 隐藏的 &lt;input type="text"&gt; 字段。

    <h:form id="innerHeaderForm1">
        <h:inputText value="#{searchBar.eventname}" />
        <h:inputText style="display: none;" />
        <h:commandButton action="#{searchBar.search1}" value="click1"/>
    </h:form>
    

    此问题与 JSF 无关。

    【讨论】:

    • 我尝试在互联网上搜索此内容,但找不到任何东西。这是在某处记录的吗?这增加了我对 IE 的厌恶。感谢您的回答。在我有机会解决这个问题之前,我可能已经摸不着头脑了。
    • 我找不到来自 Microsoft 的权威资源,但这种 MSIE 特定异常已经存在了很长时间,并且在更有经验的 Web 开发人员中广为人知。您至少可以在 Google 中看到您不是唯一的:google.com/search?q=msie+single+text+input+submit+enter
    【解决方案2】:

    inputText 没有收到id="eventName"

    【讨论】:

    • 这毫无意义。无论如何,JSF 都会自动生成一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多