クライアント ハンドラーを使用してエントリを検証し、エントリが実際に数値であることを確認しようとしています。たとえば、エントリに文字が含まれている場合、ボタンを無効にして、ユーザーが続行できないようにします。GUI ビルダーを使用して GUI を作成しましたが、クライアント ハンドラー (特に validateNotNumber) が GUI から呼び出された場合に機能しません。
これまでのところ、バリデーターを機能させようとしているテキストボックスの場合、ID (ベース) = 名前 (入力フィールド) の GUI ビルダーがあり、イベントセクションの場合は「on Key Press」が入力されています。クライアント ハンドラーを持つ関数の名前と、テキスト ボックスが存在するフォームの名前 (私の場合は AbsolutePanel1) を使用します。
呼び出される関数は次のとおりです。
function isitnotnumbers(e) {
var app = UiApp.getActiveApplication();
app.createClientHandler().validateNotNumber(app.getElementById('ThisOdometer'))
.forTargets(app.getElementById('ButtonCalcMPG')).setEnabled(false);
return app;
};
この関数は実際に呼び出され、テキスト ボックスでキーが押されたときにメッセージを表示することでテストしました。ただし、数字以外のキーが押された場合とは異なり、指定されたボタンは無効になりません。
私が見つけた例では、手動でコーディングされた UI ウィジェットのバリデーターがリストされていたため、GUI ビルダーを使用するときにどこが間違っているのかわかりません。
では、どこが間違っていて、どうすれば修正できますか? GUI ビルダーにクライアント ハンドラー (HTML サービスの使用など) に関する制限がある場合の回避策はありますか?
私の他の試み:
上記のコードを変更して、クリック ハンドラーをテキスト ボックスに追加しようとしました。
var app = UiApp.getActiveApplication();
var handlernumbers = app.createClientHandler()
.forTargets(app.getElementById('LabelUserMessage'))
.setText('THe message');
var odobox = app.getElementById('ThisOdometer');
odobox.addClickHandler(handlernumbers);
return app;