Javascript 剔除safari验证错误

Javascript 剔除safari验证错误,javascript,google-chrome,knockout.js,safari,Javascript,Google Chrome,Knockout.js,Safari,我被淘汰出局了,但我没有被淘汰出局。 我在safari/ios中遇到了奇怪的错误(windows chrome和android chrome-all ok) origin:ko.observable().extend({ 所需:{ 消息:“需要源代码。” } }), var errors=ko.validation.group(本); var lineErrors=ko.validation.group(this.lines{ 深:是的, 现场直播:真的 }); console.log(1,er

我被淘汰出局了,但我没有被淘汰出局。 我在safari/ios中遇到了奇怪的错误(windows chrome和android chrome-all ok)

origin:ko.observable().extend({
所需:{
消息:“需要源代码。”
}
}),
var errors=ko.validation.group(本);
var lineErrors=ko.validation.group(this.lines{
深:是的,
现场直播:真的
});
console.log(1,errors().length);
console.log(2,lineErrors().length);
在铬上我得到

1-0

2-0

在狩猎中我得到

1-2

2-0

我尝试更改ko.validation.group(这个,{deep:true,live:true})-没有影响

有错误的字段是带有typeahead的文本输入

为什么?


我必须知道Safari/knockout和Chrome/knockout的区别是什么?

很难说你在这里想做什么,因为这段代码是断章取义的,但我将在这里摸黑

有可能你的台词中的“这个”

var errors = ko.validation.group(this);
…在Chrome中的解释与在Safari中的解释不同。Chrome可能认为它指的是一个对象,而Safari则认为它是另一个对象

Javascript中的“this”关键字非常棘手,应谨慎使用。确保引用的是您想要引用的确切内容的一种常见做法是将“this”赋值给其他某个范围内变量,然后您可以完全放心地引用该变量,即您所引用的是您认为自己是的内容。如果使用闭包或函数中的其他函数,这一点尤其重要。 例如

var someOuterFunction = function() {
    var outerFunction = this;

    var someInnerFunction = function() {
        var innerFunction = this;

        var doSomeWorkWithTheOuterAndInnerFunctions(outerFn, innerFn) {
            //Perform some sort of work with your functions
        }

        //Call a function that performs some sort of work with your nested functions 
        doSomeWorkWithTheOuterAndInnerFunctions(outerFunction, innerFunction);
    }
}
创建和使用outerFunction和innerFunction变量是关键。将“this”显式地设置为这些变量,然后使用这些变量将保证您将引用您认为是的东西

我希望这有帮助!:-)

我变了