Javascript 不工作时禁用ng
在我的Angular UI中,如果Javascript 不工作时禁用ng,javascript,angularjs,Javascript,Angularjs,在我的Angular UI中,如果 1) All the inputs are null or empty 2) If the endDate field is less than the startDate itself 我所做的是 <input type="submit" class="btn btn-default pull-right" style="width:100px;" value="Submit" ng-disabled="groupMember
1) All the inputs are null or empty
2) If the endDate field is less than the startDate itself
我所做的是
<input type="submit" class="btn btn-default pull-right" style="width:100px;" value="Submit"
ng-disabled="groupMembershipUserInputForm.$invalid || !(!!groupmembership.chapterCode || !!groupmembership.groupCode ||
!!groupmembership.groupName || !!groupmembership.createdBy ||
!!groupmembership.createdDate || !!groupmembership.startDate ||
!!groupmembership.endDate || !!groupmembership.losCode
|| groupmembership.compareAgainstStartDate(groupmembership.endDate) )" />
除日期比较检查外,所有字符串空/空检查都正常工作
在我的控制器中,该方法如下所示
$scope.groupmembership.compareAgainstStartDate = function (item) {
var startDate = $filter('date')(new Date($scope.groupmembership.startDate), 'MM/dd/yyyy');
var endDate = $filter('date')(new Date($scope.groupmembership.endDate), 'MM/dd/yyyy');
if (endDate < startDate) {
$scope.groupmembership.toggleInvalidInput = true;
}
else
$scope.groupmembership.toggleInvalidInput = false;
return $scope.groupmembership.toggleInvalidInput;
};
$scope.groupmembership.compareAinstStartDate=函数(项){
var startDate=$filter('date')(新日期($scope.groupmembership.startDate),'MM/dd/yyyy');
var endDate=$filter('date')(新日期($scope.groupmembership.endDate),'MM/dd/yyyy');
如果(结束日期<开始日期){
$scope.groupmembership.toggleInvalidInput=true;
}
其他的
$scope.groupmembership.toggleInvalidInput=false;
返回$scope.groupmembership.toggleInvalidInput;
};
它被击中了,但我不知道如果日期比较失败,为什么禁用不会发生
请帮帮我。您的逻辑非常正确,我怀疑您的
$scope.groupmembership.startDate
和$scope.groupmembership.endDate
,因为如果我提供了正确的日期,那么它就会按预期工作。请您尝试提供一些固定的日期来验证您的函数是否正常运行。对我来说,它与实际日期值配合得很好
$scope.startDate = $filter('date')(new Date("07/02/2016"), 'MM/dd/yyyy');
$scope.endDate = $filter('date')(new Date("0710/2016"), 'MM/dd/yyyy');
您的逻辑非常正确,我怀疑您的
$scope.groupmembership.startDate
和$scope.groupmembership.endDate
,因为如果我提供了正确的日期,那么它就会按预期工作。请您尝试提供一些固定的日期来验证您的函数是否正常运行。对我来说,它与实际日期值配合得很好
$scope.startDate = $filter('date')(new Date("07/02/2016"), 'MM/dd/yyyy');
$scope.endDate = $filter('date')(new Date("0710/2016"), 'MM/dd/yyyy');
因此,首先:
所有输入均为null或空
为此,只需在所有输入/选择/…
如果您这样做,groupMembershipUserInputForm.$invalid
将在其中一个必填字段未填写时为真
这将大大简化您的ng disabled
,如下所示:
ng-disabled="groupMembershipUserInputForm.$invalid ||
groupmembership.compareAgainstStartDate(groupmembership.endDate)"
这是第一个有效的工作步骤。现在,如果您想更进一步,您可以创建一个指令,并具有如下内容:
<input ng-model="afterDate" date-greater-than="beforeDate"/>
因此,首先:
所有输入均为null或空
为此,只需在所有输入/选择/…
如果您这样做,groupMembershipUserInputForm.$invalid
将在其中一个必填字段未填写时为真
这将大大简化您的ng disabled
,如下所示:
ng-disabled="groupMembershipUserInputForm.$invalid ||
groupmembership.compareAgainstStartDate(groupmembership.endDate)"
这是第一个有效的工作步骤。现在,如果您想更进一步,您可以创建一个指令,并具有如下内容:
<input ng-model="afterDate" date-greater-than="beforeDate"/>
在您的示例中,日期是字符串类型,因此您可能无法得到正确的结果。要比较日期,请首先使用能给出准确结果的
getTime()
将其转换为time。无需使用过滤器进行日期检查
只需像这样使用:
$scope.groupmembership.compareAgainstStartDate = function () {
var startDate = new Date($scope.groupmembership.startDate);
var endDate = new Date($scope.groupmembership.endDate);
if (endDate.getTime() < startDate.getTime()) {
$scope.groupmembership.toggleInvalidInput = true;
}
else
$scope.groupmembership.toggleInvalidInput = false;
return $scope.groupmembership.toggleInvalidInput;
};
$scope.groupmembership.compareAinstStartDate=函数(){
var startDate=新日期($scope.groupmembership.startDate);
var endDate=新日期($scope.groupmembership.endDate);
if(endDate.getTime()
在您的示例中,日期是字符串类型,因此您可能无法得到正确的结果。要比较日期,请首先使用能给出准确结果的getTime()
将其转换为time。无需使用过滤器进行日期检查
只需像这样使用:
$scope.groupmembership.compareAgainstStartDate = function () {
var startDate = new Date($scope.groupmembership.startDate);
var endDate = new Date($scope.groupmembership.endDate);
if (endDate.getTime() < startDate.getTime()) {
$scope.groupmembership.toggleInvalidInput = true;
}
else
$scope.groupmembership.toggleInvalidInput = false;
return $scope.groupmembership.toggleInvalidInput;
};
$scope.groupmembership.compareAinstStartDate=函数(){
var startDate=新日期($scope.groupmembership.startDate);
var endDate=新日期($scope.groupmembership.endDate);
if(endDate.getTime()
只需将开始日期和结束日期转换为毫秒,并进行比较
请尝试以下代码一次:
$scope.groupmembership.compareAgainstStartDate = function () {
var startDate = new Date($scope.groupmembership.startDate).getTime();
var endDate = new Date($scope.groupmembership.endDate).getTime();
if (endDate < startDate) {
$scope.groupmembership.toggleInvalidInput = true;
} else {
$scope.groupmembership.toggleInvalidInput = false;
}
return $scope.groupmembership.toggleInvalidInput;
};
$scope.groupmembership.compareAinstStartDate=函数(){
var startDate=新日期($scope.groupmembership.startDate).getTime();
var endDate=新日期($scope.groupmembership.endDate).getTime();
如果(结束日期<开始日期){
$scope.groupmembership.toggleInvalidInput=true;
}否则{
$scope.groupmembership.toggleInvalidInput=false;
}
返回$scope.groupmembership.toggleInvalidInput;
};
只需将开始日期和结束日期转换为毫秒,并进行比较
请尝试以下代码一次:
$scope.groupmembership.compareAgainstStartDate = function () {
var startDate = new Date($scope.groupmembership.startDate).getTime();
var endDate = new Date($scope.groupmembership.endDate).getTime();
if (endDate < startDate) {
$scope.groupmembership.toggleInvalidInput = true;
} else {
$scope.groupmembership.toggleInvalidInput = false;
}
return $scope.groupmembership.toggleInvalidInput;
};
$scope.groupmembership.compareAinstStartDate=函数(){
var startDate=新日期($scope.groupmembership.startDate).getTime();
var endDate=新日期($scope.groupmembership.endDate).getTime();
如果(结束日期<开始日期){
$scope.groupmembership.toggleInvalidInput=true;
}否则{
$scope.groupmembership.toggleInvalidInput=false;
}
返回$scope.groupmembership.toggleInvalidInput;
};
检查此示例检查此示例