간단히 말해서 요점은 각진 텍스트 상자가 두 개 있습니다.
여기있어:
<div data-ng-controller="customValidationAndNbrsCheckController">
<label class="input">
<number-only-input placeholder="Latitude" input-value="wksLat.number" input-name="wksLat.name" />
</label>
<label>
<number-only-input placeholder="Longitude" input-value="wksLon.number" input-name="wksLon.name" />
</label>
</div>
내 지시는 다음과 같습니다. UPDATE : PROBLEM SOLVED ... 여기 문제를 해결하는 정확한 변경 사항을 보여주는 바이올린이 있습니다. 읽어 주셔서 감사합니다. http://jsfiddle.net/vfsHX/
//Numbers only function
angular
.module("isNumber", [])
.directive('isNumber', function () {
return {
require: 'ngModel',
link: function (scope) {
scope.$watch('wksLat.number', function(newValue,oldValue) {
var arr = String(newValue).split("");
if (arr.length === 0) return;
if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.' )) return;
if (arr.length === 2 && newValue === '-.') return;
if (isNaN(newValue)) {
scope.wksLat.number = oldValue;
}
});
scope.$watch('wksLon.number', function (newValue, oldValue) {
var arr = String(newValue).split("");
if (arr.length === 0) return;
if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.')) return;
if (arr.length === 2 && newValue === '-.') return;
if (isNaN(newValue)) {
scope.wksLon.number = oldValue;
}
});
}
};
});
내 서비스는 다음과 같습니다.
(function (app) {
debugger;
var customValidationAndNbrsService = function () {
var customValidationAndNbrsServiceFactory = {};
customValidationAndNbrsServiceFactory.settings = new mainApp.Models.Settings();
customValidationAndNbrsServiceFactory.getSettings = function () {
return customValidationAndNbrsServiceFactory.settings;
};
return customValidationAndNbrsServiceFactory;
};
app.factory("customValidationAndNbrsService", customValidationAndNbrsService);
}(angular.module("mainApp")));
이것은 내가 여기 스택에서 찾은 예에서 나온 것입니다.
문제 : 잘 작동하지만 ...
질문 : LAT LON을 DD : MM : SS가 아닌 십진수로 입력하므로 대시와 소수를 "허용"하도록 코드를 수정하려면 어떻게해야합니까?
가능한 입력은 다음과 같습니다. 25.2223332 LAT 및 -45.685464 LON
따라서 중재자가이 질문을 삭제하지 않기를 바랍니다. 이 사이트는 유효하며 "내 코드 수정"의 도움이 필요합니다.
감사합니다, 여러분.
input-value="wksLon.number"
scope.$watch('inputValue', function (newValue, oldValue) {
var arr = String(newValue).split("");
if (arr.length === 0) return;
if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.')) return;
if (arr.length === 2 && newValue === '-.') return;
if (isNaN(newValue)) {
scope.inputValue = oldValue;
}
});
아마도 RegEx를 사용하여 설정으로 변경해야합니다.
scope.$watch('inputValue', function (newValue, oldValue) {
var myRegex = /^(-)?\d+(.\d+)$/
if (!myRegex.test(newValue) || newValue.length > 50) {
scope.inputValue = oldValue
}
});
length > 50
<number-only-input placeholder="Longitude" input-value="wksLon.number" input-name="wksLon.name" />
위의 요소 input-value 및 input-name은 동일한 이름으로 바인딩됩니다.
scope: {
inputValue: '=',
inputName: '='
},
그러나 다른 것을 사용하려면 다음과 같이 할 수 있습니다.
scope: {
Value: '=inputValue',
Name: '=inputName'
},
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다