我刚刚测试了你的确切代码,它在这里按预期工作......出于测试目的,我创建了一个显示另一个 UI 的 showCompletePage() 函数,我实际上可以从一个切换到另一个......所以也许错误存在于其他地方?在 showCompletePage 部分?
这是测试代码,你的部分没有改变:
function buildUI() {
var app = UiApp.createApplication().setHeight(130).setWidth(400);
app.setTitle("Search by name / lastname / adress");
var panel = app.createVerticalPanel().setId('rightPanel');
var txtBox = app.createTextBox();
var label=app.createLabel(" Item to search for :")
panel.add(label);
txtBox.setId("item").setName("item");
var label0=app.createLabel("Row").setWidth("40");
var label1=app.createLabel("Name").setWidth("120");
var label2=app.createLabel("Lastname").setWidth("120");
var label3=app.createLabel("Street").setWidth("120");
var hpanel = app.createHorizontalPanel();
hpanel.add(label0).add(label1).add(label2).add(label3)
//
var txt0=app.createTextBox().setId("lab0").setName("0").setWidth("40");
var txt1=app.createTextBox().setId("lab1").setName("txt1").setWidth("120");
var txt2=app.createTextBox().setId("lab2").setName("txt2").setWidth("120");
var txt3=app.createTextBox().setId("lab3").setName("txt3").setWidth("120");
var hpanel2 = app.createHorizontalPanel();
hpanel2.add(txt0).add(txt1).add(txt2).add(txt3)
var hidden = app.createHidden().setName("hidden").setId("hidden");
var subbtn = app.createButton("next ?").setId("next").setWidth("250");
panel.add(txtBox);
panel.add(subbtn);
panel.add(hidden);
panel.add(hpanel);
panel.add(hpanel2);
//
var submitHandler = app.createServerHandler("showCompletePage");
subbtn.addClickHandler(submitHandler);
submitHandler.addCallbackElement(panel);
//
app.add(panel);
ss.show(app);
}
//
function showCompletePage(){
var app = UiApp.getActiveApplication();
app.getElementById('rightPanel').setVisible(false);
var pnl = app.createVerticalPanel().setId('outro');
var text = "<p>Uw aanvraag is met succes verwerkt.</p>";
text += "<p>U zal zo meteen een offerte ontvangen via mail.<br />Verzeker u ervan dat de mail niet in uw spam toegekomen is.</p>";
text += "<p>Gelieve de offerte binnen de drie dagen terug te sturen, zodat uw reservatie definitief bevestigd kan worden.</p>";
pnl.add(app.createHTML(text).setId('final'));
var el = app.createButton('Klik hier indien u nog een opleiding wil reserveren').setId('anotherOne');
el.addClickHandler(app.createServerHandler("startAgain"));
app.add(pnl);
app.add(el);
return app;
}
function startAgain(e){
Logger.log('restart');
var app = UiApp.getActiveApplication();
app.getElementById('startAgain').setVisible(false);
app.getElementById('outro').setVisible(false);
buildUI();
return app;
}