AngularJs 입력 상자 천분위 명령
(function () {
'use strict';
angular.module('testModule')
.directive('formatInputValue', function ($parse) {
return {
link: function (scope, element, attrs, ctrl) {
function limit() {
var limitV = element[0].value;
limitV = limitV.replace(/[^0-9.]/g, "");
element[0].value = limitV;
$parse(attrs['ngModel']).assign(scope, limitV);
format();
}
function limitBind() {
var limitV = element.context.innerHTML;
limitV = limitV.replace(/[^0-9.]/g, "");
element.context.innerHTML = limitV;
$parse(attrs['ngBind']).assign(scope, limitV);
formatBind();
}
function format() {
var formatV = element[0].value;
var array = new Array();
array = formatV.split(".");
var re = /(-?\d+)(\d{3})/;
while (re.test(array[0])) {
array[0] = array[0].replace(re, "$1,$2")
}
var returnV = array[0];
if (attrs.name == "oneDecimal"&&array.length>1) {
returnV += "." + (array[1].toString().substring(0, 1));
}
else if(attrs.name == "noDecimal")
{
//keep the no decimal value
}
else{
for (var i = 1; i < array.length; i++) {
returnV += "." + array[i];
}
}
element[0].value = returnV;
if (formatV == '')
{
$parse(attrs['ngModel']).assign(scope, '');
}
else if( formatV==null)
{
$parse(attrs['ngModel']).assign(scope, null);
}
else if ((formatV.indexOf('.') > 0) && array.length == 2 && attrs.name != "noDecimal") {
if (attrs.name == "oneDecimal")
{
var formatArr = new Array();
formatArr= formatV.split(".");
formatV = formatArr[0];
if (formatArr.length > 1)
{ formatV += "." + (formatArr[1].toString().substring(0, 1)); }
}
$parse(attrs['ngModel']).assign(scope, formatV);
}
else {
$parse(attrs['ngModel']).assign(scope, parseFloat(formatV));
}
}
function formatBind() {
var formatV = element.context.innerHTML;
var array = new Array();
array = formatV.split(".");
var re = /(-?\d+)(\d{3})/;
while (re.test(array[0])) {
array[0] = array[0].replace(re, "$1,$2")
}
var returnV = array[0];
for (var i = 1; i < array.length; i++) {
returnV += "." + array[i];
}
element.context.innerHTML = returnV;
$parse(attrs['ngBind']).assign(scope, formatV);
}
if (attrs.ngModel) {
scope.$watch(attrs.ngModel, function () {
limit();
})
}
else {
scope.$watch(attrs.ngBind, function () {
limitBind();
})
}
}
};
})
}());
// , ,
<input class="form-control" ng-model="detail.x" name="noDecimal" format-input-value />td>
//
<input class="form-control" ng-model="detail.x" name="noDecimal" format-input-value />td>
//
<input class="form-control" ng-model="detail.y" name="oneDecimal" format-input-value />td>
전재 대상:https://www.cnblogs.com/Aaron-Lee/p/9182344.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.