0

http://jsfiddle.net/x3azn/s7gFD/1/

我有一个过滤器可以过滤用户输入,但是每三到两次,如果你在框中输入一个字母,它就会通过。如果您不明白我的意思,请尝试输入以下内容。

ddd
asdfgg
vckzvdd
qwertt

希望你能收到消息。如果你输入它就不会出现

dfadfasdf, 

这很好,但我们不能假设。

4

1 回答 1

1

由于某种原因,您的解析器不会在重复按键时执行。因此,如果您键入“aa”或“bb”或“cc”,您最终会在框中留下“a”或“b”或“c”,而解析器从未运行过。我无法真正回答为什么会这样,但我可以提出一个替代方案:

您将过滤器与此指令耦合是否有原因?您可以仅使用指令轻松完成相同的任务,并且(无论如何对我来说)它看起来更干净:

app.directive('filteredInput', function($filter){
    var dirLink = function(s,e,a,c){
        console.log(s);
        console.log(a);
        s.$watch(a.ngModel, function(v) {
            //if (pattern.indexOf('numbers') != -1){
               s[a.ngModel] = s[a.ngModel].replace(/[^\d.]/g, "");
           //}
        });
    }
    return{
        require: 'ngModel',
        scope: true,
        link: dirLink
    }
});

http://jsfiddle.net/s7gFD/2/

于 2013-05-06T18:53:54.490 回答