我想将一个 ServerHandler 绑定到一个提交按钮,这样我就可以在提交之前验证我的表单。如果验证成功,则执行表单的 POST。如果验证失败(由于字段不完整或不正确),则 POST 将停止,ServerHandler 可以指示不正确的字段。您在 Javascript 中使用 event.preventDefault() 执行的操作,或者在提交的按钮处理程序中返回 false。
var app = UIApp.getActiveApplication();
var form = app.createFormPanel();
var panel = app.createVerticalPanel();
// Add form elements to panel such as textboxes, radio buttons, list boxes etc.
...
...
var button = app.createSubmitButton("submit");
button.addClickHandler(app.createServerHandler("validate").addCallbackElement(panel));
panel.add(button);
form.add(panel);
app.add(form);
function validate(e) {
// Do the validation of the form
// QUESTION - How do we then disable or allow the POST?
}
所以我目前正在做的事情是有一个验证按钮(普通按钮),如果在服务器处理程序中完成的表单验证是好的,它会变成一个“提交”按钮。然后用户必须再次单击该按钮才能提交表单。一旦验证良好,我必须锁定所有元素以防止它们更改任何字段。必须有一种更好的方法,更类似于上面提到的 Javascript 路由,并在此处引用:event.preventDefault() vs. return false
作为参考,如果您将验证 ServerHandler 绑定到提交按钮,它将始终执行 POST。