Javascript AngularJS-转换输入值并使视图反映所做的更改

Javascript AngularJS-转换输入值并使视图反映所做的更改,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,当用户在我的输入中输入文本时,我希望 删除所有空白 将输入的文本设置为小写 更改视图输入值以反映上述更改 我写了一个处理小写字母的指令,看起来不错,但效果很差 angular.module("app").directive "toLowercase", function() { return { require: "ngModel", link: function(scope, element, attrs, ngModel) {

当用户在我的输入中输入文本时,我希望

删除所有空白 将输入的文本设置为小写 更改视图输入值以反映上述更改 我写了一个处理小写字母的指令,看起来不错,但效果很差

angular.module("app").directive "toLowercase", function()
{
    return {
        require: "ngModel",
        link: function(scope, element, attrs, ngModel)
        {
            ngModel.$parsers.unshift(function(viewValue)
            {
                var val = (viewValue || "").toLowerCase();
                element.val(val);
                return val;
            });
            ngModel.$formatters.unshift(function()
            {
                return ngModel.$modelValue.toLowerCase();
            });
        }
    }
}
使用演示: 它似乎有空白的问题,而且光标在输入字段中的工作方式很奇怪,因为我替换了我计算的值


有人做过这样的事吗

您需要绑定onblur上的reformat函数,因为ngModel将在每次按下键时触发


请参见

空白有什么问题?我试过了-效果很好。输入大写文本后立即按空格键似乎根本不起作用,但如果您没有遇到这种情况,则可能是局部问题。如果您只制作一个$scope函数,在ng keyup上触发,并在其键不是空格键时返回事件,并且在需要?