可自动计算属性(过滤用户验证)

//过滤并验证用户输入
//例1展示的是写操作的过滤功能,如果你写的值不符合条件的话将不会被写入,忽略所有不包含空格的值
//再多走一步,你可以声明一个监控属性,isValid来表示最后一次写入的是否合法,然后根据真假显示相应的提示信息。

function MyViewModel()
{
this.acceptedNumbericValue =ko.observable(123);

this.lastInputWasValid= ko.observable(true);

this.attemptedValue = ko.computed({
    
    read: this.acceptedNumericValue,
    
    write: function(value){
        
        if(isNaN(value) this.lastInputWasValid(false);
        
        else
        {
            this.lastInputWasValid(true);
            
            this.acdeptedNumericValue(value); //Write to underlying storage
        }
        
    },
    
    owner: this
    
});

}

ko.applyBindings(new MyViewModel());

Enter a numberic value:

That's not a number!

//现在,acceptedNumbericValue 将只接受数字,其它任何输入的值都会触发显示验证信息,而更新acceptedNumbericValue。

//备注:上面的例子显得杀伤力太强了,更简单的方式是在 上使用jQuery Validation和 number class。Knockout可以和

//jQuery Validation一起很好的使用,参考例子:grid editor。当然,上面的例子依然展示了一个如何使用自定义逻辑进行过滤

//和验证数据,如果验证很复杂而jQuery Validation很难使用的话,你就可以用它。

你可能感兴趣的:(可自动计算属性(过滤用户验证))