[英]Dojo Forms. How to show errors about incorrect filled form elements like dijit method validate() does?
我正在使用dojo表单,并使用AJAX提交。 我使用2种验证方法: 在客户端和服务器端:
dojo.connect(form, "onsubmit", function(event){
dojo.stopEvent(event);
var digit_form = dijit.byId("user_profile_form");
if (!digit_form.validate()) {
return false;
}
// client-side validation is ok, so we submit form using AJAX
var xhrArgs = {
form: form,
handleAs: "json",
load: function(responseText){
// here I get response from server
// and if there are errors on server
// responseText object contains array with errors, so I
// need to show this errors to user
},
error: function(error) {
}
}
var deferred = dojo.xhrPost(xhrArgs);
}
问题是validate()方法向用户显示了不错的错误消息,但是当我从服务器获取错误时,我无法像方法validate()一样显示错误,因此我使用了不太好的本机javascript alert()方法。 我希望在服务器和客户端上均等地显示可验证的错误。
对于每个服务器端错误,设置一个新的widget.SSError
属性。
error: function(error) {
widget.set('SSError','The value is invalid because server thought so...'
form.validate();
}
覆盖widget.isValid()
函数,并使其检查新的widget.SSError
属性。
根据此消息 ,
var myCustomFS = dojo.declare(dijit.form.FIlteringSelect, {
postMixInProperties: function() {
this.inherited(arguments);
// Point _isValidOld at the function isValid currently points at
this._isValidOld = this.isValid;
// Point isValid at a new function
this.isValid = function() {
if (this.SSError) {
return false;
}
return this._isValidOld(); // Calls the original isValid function
}
}
};
监视该值,并在更改时重置widget.SSError
。
widget.watch('value', function(){
widget.set('SSError', false)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.