我需要添加一个处理程序,该处理程序在选择被单击时将触发,然后将验证值。当前功能正在(从模糊框中通过textInput)验证(在提示框中记录整个值之前),因此没有通过验证(应通过验证)。

这是我在下面在TextInput页面中实现意见箱的地方尝试的操作:

public void onModuleLoad() {

SuggestBox box = new SuggestBox(createListOracle(),myTextBox());

box.addSelectionHandler(new SelectionHandler<Suggestion>() {

    @Override
    public void onSelection(SelectionEvent<Suggestion> event) {
        Validate();
    }
});


另一个解决方案可能是在从中选择意见箱时将训练程序聚焦在焦点上,这对我来说可以完成同样的事情。

问题是处理程序从不触发。永远不会达到断点。

最佳答案

然后看一下ValueBoxBase。

您将把自己的实例传递给SuggestBox的构造函数

公共的SuggestBox(建议Oracle oracle,ValueBoxBase框)

TextBox是ValueBoxBase的子类,并且具有ClickListeners,因此您可以在以下选项之间进行选择:


在外部创建您的TextBox并将其添加到侦听器,然后将其传递给构造函数RecommendationBox(SuggestOracle oracle,ValueBoxBase框)
重写SuggestBox,并使构造函数使用“更好的” ValueBoxBase(例如,TextBox),并将侦听器方法添加到您的实现中


我尝试了这个样本,它有效

        TextBox suggestTextBox = new TextBox();
    suggestTextBox.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            Window.alert("tada");
        }
    });
    SuggestOracle oracle = new MultiWordSuggestOracle(" ,");

    final SuggestBox nameField = new SuggestBox(oracle, suggestTextBox);

09-10 13:24