我的HTML文件中有一个输入框。如果用户输入一个数字,我想返回getZip(),如果用户输入一个字符串,我想返回getCity()。这可能与单个输入框有关,还是我需要为type =“text”指定一个,为type =“number”指定一个?
view.html:
<div ng-app="myApp" ng-controller="myCtrl">
<form ng-submit="getData()">
<input type="search" ng-model="location">
<button>Get Weather</button>
</form>
myApp.js:
第一次尝试:
$scope.getData = function() {
switch (angular.isString($scope.location)) {
case true:
return $scope.getCity();
break;
case false:
return $scope.getZip();
break;
default:
return "Location not recognized";
};
};
第二次尝试:
$scope.getData = function () {
if (angular.isString($scope.location)) {
return $scope.getCity()
} else {
return $scope.getZip()
};
似乎即使输入是一个数字,一旦它通过范围,它就是一个字符串,无论如何。有没有解决的办法?提前谢谢!
答案 0 :(得分:1)
如果您尝试将输入与数值进行比较,则应将其解析为int:
if( !isNaN($scope.location) && parseInt($scope.location) == 1123) {
alert('yes');
}
isNaN()
如果输入不是数字,则返回true
,这就是我将!添加到条件
答案 1 :(得分:1)
您应该检查您的输入是否是数字,因为所有输入最初都是字符串类型:
if (!isNaN($scope.location)) {
return $scope.getZip()
}
else {
return $scope.getCity()
}
答案 2 :(得分:0)
尝试另一种方式,从angular.isNumber开始,字符串数字应该返回true但是带字母的字符串应该返回false