【发布时间】:2023-03-20 03:21:01
【问题描述】:
HTML代码:
<form name="FrmMessageSearch" ng-submit="searchMessages()" novalidate="novalidate">
<input type="text" name="fromDate" validate-from-date="{{message.toDate}}" ng-model="message.fromDate" jqdatepicker/>
<span ng-show="FrmMessageSearch.fromDate.$error.enterFromDate && FrmMessageSearch.fromDate.$dirty">Select From Date</span>
<span ng-show="FrmMessageSearch.fromDate.$error.validateFromDateRequired && FrmMessageSearch.fromDate.$dirty">From Date Should be less than To Date</span>
<input type="text" name="toDate" validate-from-date="{{message.fromDate}}" ng-model="message.toDate" jqdatepicker/>
<span ng-show="FrmMessageSearch.toDate.$error.enterToDate && FrmMessageSearch.toDate.$dirty">Select To Date</span>
<span ng-show="FrmMessageSearch.toDate.$error.validateToDate && FrmMessageSearch.toDate.$dirty">To Date should be greater than From Date</span>
<button ng-disabled="(!FrmMessageSearch.$valid)" class="btn btn-primary" type="submit">
</form>
JS代码:
app.directive('validateToDate', function($log)
{
return {
restrict : 'A',
require : 'ngModel',
link : function(scope, element, attr, controller)
{
controller.$parsers.unshift(function(value)
{
var toDate = Date.parse(value);
var fromDate = Date.parse(attr.validateToDate);
var valid;
if (value == '' && fromDate != '')
{
controller.$setValidity('enterToDate', false);
valid = false;
}
else
{
valid = true;
controller.$setValidity('enterToDate', true);
if (fromDate <= toDate)
{
valid = true;
controller.$setValidity('validateToDate', true);
}
else
{
valid = false;
controller.$setValidity('validateToDate', false);
}
}
return valid ? value : undefined;
})
}
};
})
app.directive('validateFromDate', function($log)
{
return {
restrict : 'A',
require : 'ngModel',
link : function(scope, element, attr, controller)
{
controller.$parsers.unshift(function(value)
{
var toDate = Date.parse(attr.validateFromDate);
var fromDate = Date.parse(value);
var valid;
if (value == '' && toDate != '')
{
controller.$setValidity('enterFromDate', false);
valid = false;
}
if (fromDate <= toDate)
{
valid = true;
controller.$setValidity('validateFromDate', true);
}
else
{
valid = false;
controller.$setValidity('validateFromDate', false);
}
return valid ? value : undefined;
})
}
};
})
我在这里尝试做的是: 1) 要么选择两个日期,要么都不选择 2)如果只选择了一个日期,其他应该提示错误,请选择日期 3) from date 应该大于 to date 有人可以帮助我如何完成这项工作,非常感谢任何帮助,谢谢
【问题讨论】:
标签: javascript angularjs validation angularjs-directive angularjs-scope