Knockout 异步验证 IE9

Knockout async validation IE9

一切都在 chrome 中完美运行,但在 IE 中不起作用。发生此异步调用并触发 callback(false),但 constCentreNumber 仍然有效且未显示任何错误。

 self.costCentreNumber = ko.observable().extend({
            required: { params: true, message: utils.message.required("Cost Centre number") },
            pattern: {
                message: utils.message.format("Cost Centre number"),
                params: '^[0-9a-zA-Z]{1,10}$'
            },
            validation: {
                async: true,
                message: utils.message.invalid("Cost Centre number"),
                validator: function (val, otherval, callback) {
                    dataSource.validate.costCode(val, self.shiftStart())
                        .always(function(result) {
                            callback(result);
                        });
                }
            }
        });

非常愚蠢,chrome 将结果读取为布尔值,但 IE - 作为字符串,这就是为什么它仍然有效,"false"

解决方案是:

callback(result == "true" || result === true);