1

クライアント ハンドラーを使用してエントリを検証し、エントリが実際に数値であることを確認しようとしています。たとえば、エントリに文字が含まれている場合、ボタンを無効にして、ユーザーが続行できないようにします。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;
4

2 に答える 2

1

これを試して:

function isitnotnumbers(e) {
var app = UiApp.getActiveApplication();
app.getElementById('ThisOdometer').addKeyUpHandler(app.createClientHandler().validateNotNumber(app.getElementById('ThisOdometer'))
.forTargets(app.getElementById('ButtonCalcMPG')).setEnabled(false));
return app;
};

編集: 別の関数でこのコードは必要ありません。次の行を doGet() またはメイン関数に追加するだけです (アプリの起動時にハンドラーが 1 回だけ作成されるようにします)。

app.getElementById('ThisOdometer').addKeyUpHandler(app.createClientHandler().validateNotNumber(app.getElementById('ThisOdometer'))
    .forTargets(app.getElementById('ButtonCalcMPG')).setEnabled(false));
于 2013-01-06T08:39:14.377 に答える
0

私自身の質問に答えるために、Google は gui ビルダーを非推奨にしており、9 月以降は機能しなくなるため、問題ではないと言います。

uiservice や htmlservice を学ぶべきだった、あるいは学ぶべきだったのかもしれません。

于 2013-03-26T07:39:59.213 に答える