防止默认操作

时间:2011-02-18 05:47:13

标签: javascript jsf button command richfaces

此页面在 newwindow 中打开。   我有一个文本框和两个按钮(h:commandbutton和a4j:commandButton)。

我将光标焦点移动(设置)到文本字段。

我的问题是,我从文本字段点击输入按钮,然后自动调用h:comandButton操作并关闭新窗口。如何避免这种情况。

但是,我需要,当我点击输入按钮时,将光标焦点移动到 a4j:commandButton

<f:view>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript">

            function a4jButtonClick()
            {
                alert("A4J Command Buton clicked...");
            }
        </script>

    </head>
    <body>
        <h:form id="sampleForm">
            <rich:panel id="samplePanel">

            <h:outputText value="User Name : "/>
            <h:inputText/>

            <h:commandButton value="Closing-CommandButton" 
                             onclick="javascript:window.close();return false;"/>

            <a4j:commandButton value="A4JCommandButton" onclick="a4jButtonClick()"/>                      

            </rich:panel>
        </h:form>
    </body>
</html>
</f:view>

如果我点击了textfiled的输入按钮,我想调用脚本警报(“A4J Command Buton clicked ...”);

帮帮我。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

尝试在onclick处理程序中添加return false:

<h:commandButton value="HCommandButton" onclick="hButtonClick();return false;"/>
<a4j:commandButton value="A4JCommandButton" onclick="a4jButtonClick();return false;"/>

但是按下按钮后,您的表单将不会被提交。

答案 1 :(得分:0)

当您按下键盘上的Enter / Return键时,标记中的第一个按钮将被激活。

因此,您需要将标记中按钮的顺序更改为:

<a4j:commandButton value="A4JCommandButton" onclick="a4jButtonClick()"/>
<h:commandButton value="Closing-CommandButton" onclick="javascript:window.close();return false;"/>

请记住你仍然可以将它们设为以使其符合原始顺序,因此设计不会改变。