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