Java 关注第二个textfield Wicket

Java 关注第二个textfield Wicket,java,wicket,form-submit,Java,Wicket,Form Submit,我有两套搜索文本字段: 当我尝试使用返回键(Enter)提交时,第一个文本字段工作正常。但是,当输入第二个文本字段并按下返回键时,第一个文本字段被执行 我尝试将焦点设置为第二个文本字段,如下所示: secondTextField = new TextField("secondTextField", new Model()){ @Override protected void onComponentTag(ComponentTag tag)

我有两套搜索文本字段:

当我尝试使用返回键(Enter)提交时,第一个文本字段工作正常。但是,当输入第二个文本字段并按下返回键时,第一个文本字段被执行

我尝试将焦点设置为第二个文本字段,如下所示:

    secondTextField = new TextField("secondTextField", new Model()){
        @Override
        protected void onComponentTag(ComponentTag tag)
        {
                super.onComponentTag(tag);

                tag.put("onclick", "getelementbyid('"+secondTextField.getMarkupId()+"').focus()");

        } 
    };

    form.add(secondTextField);

但这不起作用。有什么想法吗?

除非另有定义,否则几乎每个浏览器都会通过enter键上的第一个可用按钮提交当前表单。因此,如果你想使用另一个按钮,你必须用JavaScript修饰你的文本字段来捕获回车键,使用适当的按钮提交表单,然后(这很重要)返回false

您可以通过将两个文本字段分离为不同的形式(如果可能的话)来解决这个问题,但这只是一个猜测,因为我目前无法尝试

如果将以下代码添加到文本字段,则会阻止Enter键触发表单提交。您必须调整它,以通过特定按钮提交

/**
 * Behavior that traps the enter key press
 *
 * @author ivaynberg
 */
public class EnterKeyTrap extends Behavior implements IHeaderContributor {

    private static final long serialVersionUID = -410239548482332706L;

    @Override
    public void onComponentTag(Component component, ComponentTag tag) {
        tag.put("onkeydown", "return ekt(event)!=13");
    }

    public void renderHead(IHeaderResponse response) {
        response.renderJavaScript("function ekt(e){if(typeof(e.keyCode)==\"undefined\"){return e.which;}else{return e.keyCode;}}", "EnterKeyTrap");
    }

}

你能更清楚一点你想要完成什么吗?第一个文本字段看起来像什么?您是否正在尝试将行为添加到表单提交中(因为如果是这样的话,这就是您想要此行为的地方)。现在,您似乎正在设置第二个文本字段,以便在单击它时获得焦点。@ig0774它们基本上是两个搜索框,有自己的提交按钮。我一直试图实现的是能够在第二个搜索文本框中输入文本,并使用enter键执行搜索,而不是单击其提交按钮。每次我按enter键时,第一个搜索文本框的submit按钮都会被操作。