我简明扼要:我有两个带角度的文本框。
这是:
<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>
这是我的指示: 更新:问题已解决...这里是显示解决问题的确切更改的小提琴。感谢阅读,但我明白了。 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")));
这是我在Stack上找到的一个例子。
问题:这很有效但是......
问题:如何将代码修改为&#34;允许&#34;破折号和小数,因为我们以十进制度而不是DD:MM:SS输入LAT LON。
这里有可能的输入:25.2223332 LAT和-45.685464 LON
所以我希望主持人不要删除这个问题。这是有效的,是的,我需要一个&#34; fix-my-code&#34;帮助,因为我认为这个网站是为了。
谢谢大家。
答案 0 :(得分:1)
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" />
从上面的元素输入值和输入名称绑定了相同的名称
scope: {
inputValue: '=',
inputName: '='
},
但是如果你想使用不同的,你可以这样做:
scope: {
Value: '=inputValue',
Name: '=inputName'
},