2012-11-07 5 views
0

(동일한 위젯의) 클라이언트 핸들러가 유효성 검사 조건을 충족하면 서버 핸들러가 실행되지 않도록 할 수 있습니까? UI서버 핸들러가 실행되지 않도록하기

텍스트 상자가 비어 있으면 제출을 통해 서버 기능을 수행하지 않습니다.

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; 
} 

답변

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); 
+0

어떻게 "텍스트 상자가 비어있을 수 없다"는 '상태'레이블에 setText()를 던질 수 있습니까? –

+0

아, 그래, 그래서 emtpy를 두 번 검증해야 해. 고마워. –

관련 문제