0

クライアント ハンドラー (同じウィジェット上) が検証条件を満たしている場合、サーバー ハンドラーの起動を停止できますか? UI

テキスト ボックスが空の場合、Submit でサーバー機能を実行したくありません。

function doGet() {
  var app = UiApp.createApplication();
  var flex = app.createFlexTable()
     .setWidget(0, 0, app.createTextBox().setId('textbox'))
     .setWidget(0, 1, app.createButton('Submit').setId('submit'))
     .setWidget(0, 2, app.createLabel().setId('status'));

  var clientHandler = app.createClientHandler().validateNotMatches(app.getElementById('textbox'), ' ');

  var serverHandler = app.createServerHandler('submit').addCallbackElement(flex);

  app.getElementById('submit').addClickHandler(clientHandler).addClickHandler(serverHandler);

  app.add(flex);
  return app;

}

function submit(e) {
  var app = UiApp.getActiveApplication();
  app.getElementById('status').setText('Server handler fired');
  return app;
}
4

1 に答える 1

2

ここではクライアント ハンドラーは必要ありません。サーバー ハンドラーのバリデーターだけです。

function doGet() {
  var app = UiApp.createApplication();
  var flex = app.createFlexTable()
     .setWidget(0, 0, app.createTextBox().setId('textbox'))
     .setWidget(0, 1, app.createButton('Submit').setId('submit'))
     .setWidget(0, 2, app.createLabel().setId('status'));

  var serverHandler = app.createServerHandler('submit')
     .validateLength(app.getElementById('textbox'), 1, null)
     .addCallbackElement(flex);

  app.getElementById('submit').addClickHandler(serverHandler);

  app.add(flex);
  return app;

}

function submit(e) {
  var app = UiApp.getActiveApplication();
  app.getElementById('status').setText('Server handler fired');
  return app;
}

何が問題なのかを説明するメッセージが必要な場合は、これを追加できます。

var clientHandler = app.createClientHandler()
    .validateNotLength(app.getElementById('textbox'), 1, null)
    .forTargets(app.getElementById('status'))
    .setText('Cannot be empty');

app.getElementById('submit').addClickHandler(serverHandler)
    .addClickHandler(clientHandler);
于 2012-11-07T03:02:15.670 に答える