0

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

这是我在下面尝试的,我在 TextInput 页面中实现了建议框:

public void onModuleLoad() {

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

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

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

另一种解决方案可能是在选择建议框时将课程插入焦点,这对我来说会完成同样的事情。

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

4

2 回答 2

4

然后看看ValueBoxBase。

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

公共 SuggestBox(SuggestOracle oracle,ValueBoxBase 框)

TextBox 是 ValueBoxBase 的子类,它具有 ClickListeners,因此您可以选择:

  1. 在外面创建您的 TextBox 并添加它的侦听器,然后将其传递给构造函数 SuggestBox(SuggestOracle oracle, ValueBoxBase box)
  2. 覆盖 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);
于 2013-10-29T11:20:25.383 回答
0

您还可以使用高级建议框https://code.google.com/p/advanced-suggest-select-box/

这使您可以控制事件:您可以覆盖 valueSelected() 或 valueTyped() 并决定是否验证它。

该库的演示在这里 http://1vu-widgets.appspot.com/IntoGwt.html

于 2013-10-26T17:53:13.140 回答