GWT:为高度自定义的数据输入创建文本小部件

时间:2010-10-03 17:46:43

标签: gwt textbox textarea

我正在尝试实现一种用于数据输入的“引导式打字”小部件,其中用户的文本条目被高度控制和过滤。当用户键入特定字符时,我需要在窗口小部件中显示它之前拦截并过滤它。想象一下,如果 你将,一个Unix shell作为webapp嵌入;这就是我想要实现的那种东西。我尝试了两种方法。

首先,我展开TextArea,然后添加KeyPressHandler来过滤字符。这是有效的,但浏览器提供的拼写纠正是完全不合适的,我不知道如何关闭它。我试过了:

  

DOM.setElementProperty(textArea.getElement(),   “spellcheck”,“false”);

但这似乎没有任何影响 - 我仍然得到红色下划线 “打字错误”。

在第二种方法中,我使用FocusWidget获取KeyPress事件,使用单独的LabelHTML小部件将过滤后的字符呈现给用户。这可以避免拼写更正问题,但由于FocusWidget不是TextArea,因此浏览器会拦截某些类型字符以供内部使用;例如FireFox将使用“/”字符在页面上开始“快速查找”,点击Backspace将加载上一个网页。

有没有更好的方法来完成我想要做的事情?

2 个答案:

答案 0 :(得分:2)

您可能只能在keypress事件上使用event.preventDefault()来避免这些浏览器行为。否则,可能是这两种方法的混合体?隐藏TextArea有焦点,接受关键事件,然后将输入的字符发布到单独的Label

答案 1 :(得分:1)

TextBox上没有针对此的特定GWT方法,但这个简单的行 GWT代码修复了Chrome的问题(对于其他浏览器,YMMV - 它可能取决于它们实现HTML5的完全程度),方法是在底层输入元素上设置一个属性:

myTextBox.getElement().setAttribute("spellCheck", "false");

也许这个属性是一个相对较新的功能。