繁体   English   中英

Dojo形式。 如何显示关于不正确的填充表单元素的错误,例如dijit方法validate()呢?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM