angularjs 텍스트 상자에 대문자 강제 적용
대문자 필터를 사용해 봤지만 작동하지 않습니다.두 가지 방법을 시도했습니다.
<input type="text" ng-model="test" uppercase/>
그리고.
<input type="text" ng-model="{{test | uppercase}}"/>
두 번째는 javascript 오류를 트리거합니다.
구문 오류:토큰 '테스트'가 예기치 않습니다. [:]가 필요합니다.
텍스트 상자에 있는 사용자 유형으로 텍스트를 대문자로 표시해야 합니다.
내가 어떻게 그럴 수 있을까?
이것보다 우월한 다른 답변을 참조해 주세요.
이 답변은 다음 답변에 기초하고 있습니다.AngularJS에서 입력 필드의 첫 번째 문자를 자동 자본화하는 방법은 무엇입니까?
파서 기능은 다음과 같습니다.
angular
.module('myApp', [])
.directive('capitalize', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl) {
var capitalize = function(inputValue) {
if (inputValue == undefined) inputValue = '';
var capitalized = inputValue.toUpperCase();
if (capitalized !== inputValue) {
// see where the cursor is before the update so that we can set it back
var selection = element[0].selectionStart;
modelCtrl.$setViewValue(capitalized);
modelCtrl.$render();
// set back the cursor after rendering
element[0].selectionStart = selection;
element[0].selectionEnd = selection;
}
return capitalized;
}
modelCtrl.$parsers.push(capitalize);
capitalize(scope[attrs.ngModel]); // capitalize initial value
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<input type="text" ng-model="name" capitalize>
</div>
기존의 문자열의 선두에 소문자를 입력하려고 하면, 받아들여진 회답에 의해서 문제가 발생합니다.키를 누를 때마다 커서가 문자열 끝으로 이동합니다.다음은 모든 문제를 해결하는 간단한 솔루션입니다.
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");
}
};
})
여기 바이올린이 있습니다.http://jsfiddle.net/36qp9ekL/1710/
클라이언트측에서는 스트링을 대문자로 표시하고(변환이 아닌) 서버측에서는 대문자로 변환하는 것입니다(클라이언트측에서는 항상 사용자가 조작할 수 있습니다).그래서:
1) html:
<input id="test" type="text" ng-model="test">
대문자 변환은 없습니다.
2) css:
#test {text-transform: uppercase;}
데이터는 대문자로 표시되지만 사용자가 소문자로 입력한 경우에는 여전히 소문자로 표시됩니다.3) 데이터베이스에 삽입할 때 서버 측에서 문자열을 대문자로 변환합니다.
=====는 다음과 같은 기능을 사용해 볼 수 있습니다.
<input type="text" ng-model="test" ng-change="test=test.toUpperCase();">
<input type="text" ng-model="test" ng-blur="test=test.toUpperCase();">
하지만 당신의 경우에는 ng-change나 ng-blur 방식이 필요하지 않다고 생각합니다.
ng-model은 할당 가능해야 하므로 필터는 만들 수 없습니다.회피책은 파서 또는 단순히ng-change 중 하나입니다.
<input ng-model="some" ng-change="some = (some | uppercase)" />
이거면 될 거야.
부트스트랩과 , '부트스트랩'을 추가하기만 하면 .text-uppercase클래스 속성을 입력합니다.
one of the simple way is,
<input type="text" ng-model="test" ng-change="upper(test)/>
just do below 2 line code in your js file,
$scope.upper = function(test){
$scope.test = test.toUpperCase();
}
여기 내 바이올린 http://jsfiddle.net/mzmmohideen/36qp9ekL/299/이 있다.
이것은 전혀 작동하지 않을 것이다.
ng-model스코프에서 모델에 바인딩할 필드/속성을 지정합니다.ㅇㅇㅇㅇ.ng-model는 식을 값으로 받아들이지 않습니다.angular.js에서의 표현은 와 사이의 값입니다.
uppercase필터는 출력 및 식을 사용할 수 있는 모든 곳에서 사용할 수 있습니다.
할 수 CSS의할 수 .text-transform최소한 모든 항목을 대문자로 표시합니다.
텍스트 필드의 값을 대문자로 지정하려면 일부 사용자 정의 JavaScript를 사용하여 이 작업을 수행할 수 있습니다.
컨트롤러 내:
$scope.$watch('test', function(newValue, oldValue) {
$scope.$apply(function() {
$scope.test = newValue.toUpperCase();
}
});
모듈에 'ngSanitize'를 포함시키는 것을 잊지 마십시오.
app.directive('capitalize', function() {
return {
restrict: 'A', // only activate on element attribute
require: '?ngModel',
link : function(scope, element, attrs, modelCtrl) {
var capitalize = function(inputValue) {
if(inputValue) {
var capitalized = inputValue.toUpperCase();
if (capitalized !== inputValue) {
modelCtrl.$setViewValue(capitalized);
modelCtrl.$render();
}
return capitalized;
}
};
modelCtrl.$parsers.push(capitalize);
capitalize(scope[attrs.ngModel]); // capitalize initial value
}
};
});
'요건: '?ngModel'의 '?'에 주목해 주세요.그때서야 어플리케이션이 동작했습니다.
"만약 (inputValue) {...}" 정의되지 않은 오류는 발생하지 않습니다.
부트스트랩을 사용하는 경우:
첫 번째 접근법: 클래스 텍스트 대문자 사용
<input type="text" class="text-uppercase" >
두 번째 접근법: 기존 클래스에 적용할 수 있는 스타일을 사용합니다.
<input type="text" class="form-control" style="text-transform: uppercase;">
여기 스택 Blizz: 。
이것은 대체 수단일 뿐입니다.이 "text-transform : capitalize"를 css에 사용하면 텍스트엔트리가 대문자로 표시됩니다.사용자가 대문자로 입력하지 않는 한 말이죠.
그냥 대안일 뿐이야 ^^
Karl Zilles의 답변을 개선하기 위해 이것은 그의 해결책에 대한 나의 수정이다.이 버전에서는 자리 표시자가 대문자로 변경되지 않으며 문자열에 regex를 수행하려는 경우에도 사용할 수 있습니다.또한 입력 문자열의 "type"(null, 정의되지 않음 또는 비어 있음)도 사용합니다.
var REGEX = /^[a-z]+$/i;
myApp.directive('cf', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.cf = function(modelValue, viewValue) {
ctrl.$parsers.push(function(input) {
elm.css("text-transform", (input) ? "uppercase" : "");
return input ? input.toUpperCase() : input;
});
return (!(ctrl.$isEmpty(modelValue)) && (REGEX.test(viewValue)));
}
}
}
});
커서 이동 수정이 있는 솔루션
.directive('titleCase', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, modelCtrl) {
var titleCase = function (input) {
let first = element[0].selectionStart;
let last = element[0].selectionEnd;
input = input || '';
let retInput = input.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
if (input !== retInput) {
modelCtrl.$setViewValue(retInput);
attrs.ngModel = retInput;
modelCtrl.$render();
if (!scope.$$phase) {
scope.$apply(); // launch digest;
}
}
element[0].selectionStart = first;
element[0].selectionEnd = last;
return retInput;
};
modelCtrl.$parsers.push(titleCase);
titleCase(scope[attrs.ngModel]); // Title case initial value
}
};
});
모델 및 값을 변경하려면 다음을 사용합니다.
angular.module('MyApp').directive('uppercased', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
element.bind("blur change input", function () {
ngModel.$setViewValue($(this).val().toUpperCase());
$(this).val($(this).val().toUpperCase());
});
element.css("text-transform","uppercase");
}
};
});
그런 다음 html 입력 텍스트에 대문자를 추가합니다.
<input type="text" uppercased />
컨트롤러에서 필터 자체를 사용합니다.
$filter('uppercase')(this.yourProperty)
예를 들어 컨트롤러 내에서 사용하는 경우 다음 필터를 삽입해야 합니다.
app.controller('FooController', ['$filter', function($filter) ...
언급URL : https://stackoverflow.com/questions/16388562/angularjs-force-uppercase-in-textbox
'programing' 카테고리의 다른 글
| json.js와 json2.js의 차이점 (0) | 2023.03.07 |
|---|---|
| Oracle SQL WHERE 절에서 (+) 기호는 무엇을 의미합니까? (0) | 2023.03.07 |
| AngularJS - templateUrl 생성에 $routeParams를 사용하는 방법 (0) | 2023.03.07 |
| Angular2 DIRECTION은 요소의 알려진 속성이 아니므로 바인딩할 수 없습니다. (0) | 2023.03.07 |
| 누군가가 wp wlwmanifest.xml http 요청을 했습니다만, 그 이유는 무엇입니까? (0) | 2023.03.07 |