2012-05-02 22 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