如何在角度js中自动调整输入字段的资本?

时间:2015-05-07 09:30:59

标签: javascript jquery html angularjs

我有一个输入框。

我需要对此框进行自动投资。

是否有可用的属性或我需要在控制器上编码

我还需要将此效果应用于角度模型     

7 个答案:

答案 0 :(得分:2)

是的,我们有一个指令:) 原始代码(用TypeScript编写)在GitHub上https://github.com/ST-Software/STAngular/blob/master/src/directives/SgUpperCase.ts

//修正了光标跳到最后的错误

someModule.directive("sgUpperCase", [function () {
    function getCaretPosition(inputField) {
        // Initialize
        var position = 0;
        // IE Support
        if (document.selection) {
            inputField.focus();
            // To get cursor position, get empty selection range
            var emptySelection = document.selection.createRange();
            // Move selection start to 0 position
            emptySelection.moveStart('character', -inputField.value.length);
            // The caret position is selection length
            position = emptySelection.text.length;
        }
        else if (inputField.selectionStart || inputField.selectionStart == 0) {
            position = inputField.selectionStart;
        }
        return position;
    }
    function setCaretPosition(inputElement, position) {
        if (inputElement.createTextRange) {
            var range = inputElement.createTextRange();
            range.move('character', position);
            range.select();
        }
        else {
            if (inputElement.selectionStart) {
                inputElement.focus();
                inputElement.setSelectionRange(position, position);
            }
            else {
                inputElement.focus();
            }
        }
    }
    return {
        require: "^ngModel",
        restrict: "A",
        link: function (scope, elm, attrs, ctrl) {
            var toUpperCase = function (inputValue) {
                if (!inputValue)
                    return inputValue;
                var modified = inputValue.toUpperCase();
                if (modified !== inputValue) {
                    var position = getCaretPosition(elm[0]);
                    ctrl.$setViewValue(modified);
                    ctrl.$render();
                    setCaretPosition(elm[0], position);
                }
                return modified;
            };
            ctrl.$parsers.push(toUpperCase);
            toUpperCase(scope[attrs.ngModel]); //Transform initial value
        }
    };
}]);

答案 1 :(得分:2)

您可以使用uppercase更改该字段时使用角度过滤器ng-change,如果您想在加载时使其成为首都,那么您也应该ng-init同样的事情

<强>标记

<input type="text" ng-model="sample" ng-change="sample=(sample|uppercase)"/>

答案 2 :(得分:1)

public Bestellung() { this(null, null, new PizzaVO[0], 0); } 中添加此内容。 controller会监听对$watch所做的任何更改,并会更新该值。

bic

答案 3 :(得分:0)

你可以用CSS实际做到这一点。

.position().top
input{
    text-transform: uppercase;
}

答案 4 :(得分:0)

你不需要Jquery / Javascript这个。试试这个:

<input type="text" ng-model="abc"   id="myid" class="span6" value="" name="">

在CSS中

input {
    text-transform: uppercase;
}

<强> JSFIDDLE DEMO

答案 5 :(得分:0)

将类添加到输入标记中。 .capitalize {     text-transform:大写&#34; }

i.e <input type="text" ng-model="bic" class="capitalize" id="txtbic" maxlength="11" class="span6" value="" name="">

答案 6 :(得分:0)

查看它的工作情况..它还会更新模型...

<div ng-app="HelloApp">
    <input type="text" ng-model="name" uppercased/> {{name}}        
</div>

angular.module('components', [])
   .directive('uppercased', function() {
    return {
        require: 'ngModel',        
        link: function(scope, element, attrs, modelCtrl) {
            modelCtrl.$parsers.push(function(input) {
                return input ? input.toUpperCase() : "";
            });
            element.css("text-transform","uppercase");
        }
    };
});

angular.module('HelloApp', ['components'])

工作模式here