1

URLボックスとして使用するために、以下のようにカスタマイズされたテキストボックスを作成しました

private class URLBox extends Textbox {
        // String value =null;
        URLBox(String infoValue) {
            if (!Utility.isBlank(infoValue)) {
                setValue(infoValue);

            } else {
                setValue("Enter URL");

            }
        }

        @SuppressWarnings("unchecked")
        public void initialize() {
            addEventListener("onClick", new EventListener() {

                public void onEvent(Event event) throws Exception {

                    Textbox tb = (Textbox) event.getTarget();
                    if (tb.getValue().equalsIgnoreCase("Enter URL")) {
                        tb.setValue("");
                    }

                }
            });



            addEventListener("onBlur", new EventListener() {

                public void onEvent(Event event) throws Exception {

                    final URLBox tb = (URLBox) event.getTarget();
                    if (Utility.isBlank(tb.getValue())) {
                        tb.setValue("Enter URL");
                    } else if (!PeopleInfoViewModel.IsMatch(tb.getValue())) {
                         Messagebox.show("Please Enter a valid URL");

                    }

                }

            });

        }

    }

同様に、ナンバーボックスに対して行ったことがあります。私の問題は、URL ボックスに無効な URL を入力してナンバーボックスをクリックすると、ナンバーボックスの検証も開始されることです。URLボックスの要件を満たすまで、ナンバーボックスの検証を開始しないでください。これを達成するにはどうすればよいですか。ありがとう。

4

2 に答える 2

1

ハ、あなたは私がそこにいる間ずっと困惑していた。そして、クリスマスイブにも、あなたに恥をかかせてください;)

私はあなたの問題を再現することができました、そしてそれは単に使用のアーティファクトですMessagebox.showonBlurイベントが検証の問題を検出すると、メッセージボックスを表示する呼び出しをMessagebox.show行います。メッセージボックスには、DOMでフォーカスを取得する[OK]ボタンがあります。ボタンにフォーカスを与えると、選択したばかりの場合でも、フォーカスがNumberBox失われ、イベントが発生します。onBlur

それが理にかなっていることを願っています。Messageboxこの「二重検証」の問題は、UXの観点から、本当に必要なものを削除すると解消されます。

于 2012-12-24T17:50:18.140 に答える
0

私が提案するのは、initialize() メソッドを指定する代わりに、このようにイベント リスナー部分をクラス レベルに移動することです

final class OnClickListener implements EventListener {
        @Override
        public void onEvent(Event event) throws Exception {
            Textbox tb = (Textbox) event.getTarget();
                    if (tb.getValue().equalsIgnoreCase("Enter URL")) {
                        tb.setValue("");
                    }
        }
    }

final class OnBlurListener implements EventListener {
        @Override
        public void onEvent(Event event) throws Exception {
           final URLBox tb = (URLBox) event.getTarget();
                    if (Utility.isBlank(tb.getValue())) {
                        tb.setValue("Enter URL");
                    } else if (!PeopleInfoViewModel.IsMatch(tb.getValue())) {
                         Messagebox.show("Please Enter a valid URL");

                    }
            }
    }
于 2012-12-24T11:09:01.070 に答える