GWT:对RichTextArea进行文本限制,并停止用户输入更多字符

GWT:对RichTextArea进行文本限制,并停止用户输入更多字符,gwt,Gwt,我使用的是GWT-RixhText区域,希望在richText区域中限制100个字符 现在我正在这样做 description.addKeyDownHandler(new KeyDownHandler(){ @Override public void onKeyDown(KeyDownEvent event) { if (event.getNativeKeyCode() == KeyCodes.K

我使用的是GWT-RixhText区域,希望在richText区域中限制100个字符

现在我正在这样做

                     description.addKeyDownHandler(new KeyDownHandler(){

        @Override
        public void onKeyDown(KeyDownEvent event) {
            if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER ||
                    event.getNativeKeyCode() == KeyCodes.KEY_UP ||
                    event.getNativeKeyCode() == KeyCodes.KEY_LEFT||
                    event.getNativeKeyCode() == KeyCodes.KEY_DOWN ||
                    event.getNativeKeyCode() == KeyCodes.KEY_BACKSPACE||
                    event.getNativeKeyCode() == KeyCodes.KEY_SHIFT) {

            }else{
            if(description.getText().trim().length()>100){

            Window.alert("You have reached your maximum limit");
            }
            }
        }});
现在,当达到100个字符时,它工作正常,给我警报,但我如何阻止用户输入更多字符,它显示警报,但也接受输入。。如何阻止这一切

其次,当区域结束时,我使用下面的css移动到下一行。。它很好用。。但是,如果用户只是按住键盘上的键不释放,这个css就不起作用,不能转到下一行继续。。有解决办法吗

CSS:


谢谢

为了防止在100之后输入字符,您可以这样做

if(description.getText().trim().length()>100)
{
        description.setText(description.getText().substring( 0, 100 ));
        Window.alert("You have reached your maximum limit");
}

为了防止在100之后输入字符,您可以这样做

if(description.getText().trim().length()>100)
{
        description.setText(description.getText().substring( 0, 100 ));
        Window.alert("You have reached your maximum limit");
}
使用而不是Window.alert()

使用而不是Window.alert()


请把这个问题一分为二我在一个相关的问题上检查了这个问题。为了给后面的人增加一些额外的帮助,我做了一些类似的事情,但是使用KeyUpHandler而不是KeyDownHandler,因为对于后者,在检查文本长度时,它似乎落后了一个字符(没有计算与刚刚按下的键对应的字符).请把问题一分为二我在一个相关问题上检查了这个问题。为了给后面的人添加一些额外的帮助,我正在做类似的事情,但是使用KeyUpHandler而不是KeyDownHandler,因为对于后者,在检查文本长度时,它似乎落后了一个字符(没有计算与刚才按下的键对应的字符)。尝试了这个。它起作用了。。但它扰乱了所有的形成过程。。例如,如果用户在输入101个单词时位于第三行,则在输入101个单词后,文本仅变为第一个100,这是正确的,但所有完整的句子变为一行,而不是三行。。任何IDEA在使用子字符串之前,您可以获得文本的新行字符(“\n”)的位置,在使用子字符串之后,您可以将其添加到\n在此之前的位置。它起作用了。。但它扰乱了所有的形成过程。。例如,如果用户在输入101个单词时位于第三行,则在输入101个单词后,文本仅变为第一个100,这是正确的,但所有完整的句子变为一行,而不是三行。。任何IDEA在使用子字符串之前,您可以获得文本的新行字符(“\n”)的位置,在使用子字符串之后,您可以将其添加到以前的位置
if(description.getText().trim().length()>=100) {
  event.preventDefault();
}