//過濾并驗(yàn)證用戶輸入
//例1展示的是寫操作的過濾功能筹陵,如果你寫的值不符合條件的話將不會(huì)被寫入途乃,忽略所有不包含空格的值
//再多走一步顶伞,你可以聲明一個(gè)監(jiān)控屬性廉油,isValid來表示最后一次寫入的是否合法牲芋,然后根據(jù)真假顯示相應(yīng)的提示信息撩笆。
<pre>
<code>
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());
<p>Enter a numberic value:<input data-bind="value:attemptedValue" /></p>
<div data-bind="visiblue:!lastInputWasValid()"> That's not a number! </div>
//現(xiàn)在,acceptedNumbericValue 將只接受數(shù)字缸浦,其它任何輸入的值都會(huì)觸發(fā)顯示驗(yàn)證信息夕冲,而更新acceptedNumbericValue。
//備注:上面的例子顯得殺傷力太強(qiáng)了裂逐,更簡(jiǎn)單的方式是在<input> 上使用jQuery Validation和 number class歹鱼。Knockout可以和
//jQuery Validation一起很好的使用,參考例子:grid editor卜高。當(dāng)然弥姻,上面的例子依然展示了一個(gè)如何使用自定義邏輯進(jìn)行過濾
//和驗(yàn)證數(shù)據(jù)南片,如果驗(yàn)證很復(fù)雜而jQuery Validation很難使用的話,你就可以用它庭敦。
<code>