2012-05-02 74 views
1

我有一個簡單的輸入文本元素:KnockoutJS - 過濾用戶輸入

<input type="text" data-bind="value:valInserted,valueUpdate:'afterkeydown'" /> 

我怎樣才能驗證此元素的用戶輸入?我在創建合適的綁定端口jQuery代碼時遇到問題:

$('[id$="pinBox"] :text').keypress(function (e) 
{ 
    if (!(e.charCode >= 48 && e.charCode <= 57) && e.keyCode != 8) 
    { 
     return false; 
    } 
}); 
+0

對於特定的驗證位,我不確定是否有理由改變它。這只是拒絕鑰匙,對吧?它不工作嗎? – joshp

+0

是的,它的工作原理。但我很好奇,我如何使用KnockoutJS庫來實現這一目標,而不僅僅是通過jQuery綁定元素事件。 – lszk

回答

0

我想我終於明白了。

<input type="text" data-bind="validateValue:valInserted,valueUpdate:'afterkeydown',value:valInserted" /> 

ko.bindingHandlers.validateValue = { 
    update: function (element, valueAccessor, allBindingsAccessor, viewModel) 
    { 
     var value = ko.utils.unwrapObservable(valueAccessor()); 
     viewModel.valInserted(value.replace(/[^0-9]/g, '')); 
    } 
}; 
+1

你在這裏假設你的bindingHandler的值的名字例如。 valInserted。 – Popara