2015-07-10 25 views
5

Tôi hoàn toàn Mới đối với Angularj và cố gắng xác thực 2 kịch bản. Tôi có 2 hộp văn bản một với ngày bắt đầu và một với ngày kết thúc. Tôi đang kiểm traNgày bắt đầu và ngày kết thúc xác thực

  1. Hiển thị lỗi xác thực trên giao diện người dùng nếu ngày bắt đầu không lớn hơn hoặc bằng ngày hôm nay. Nó sẽ là ngày hôm nay hoặc bất kỳ ngày nào sau ngày hôm nay.
  2. Hiển thị lỗi xác thực trên giao diện người dùng nếu ngày bắt đầu lớn hơn ngày kết thúc. Ngày kết thúc phải lớn hơn ngày bắt đầu.

Tôi đã thử mã bên dưới không hoạt động. Bất kỳ đề nghị xin vui lòng.

Html Mã

<label for="endDate" class="control-label">Start Date:</label> 
<div> 
    <input type="text" class="form-control" 
      id="startDate" ng-model="startDate" /> 
</div> 

<label for="text" class="control-label">End Date:</label> 
<div> 
    <input type="text" class="form-control" 
      id="endDate" ng-model="endDate" 
      ng-change='checkErr(startDate,endDate)' /> 

</div> 

<span>{{errMessage}}</span> 

js đang

$scope.checkErr = function(startDate,endDate){ 
    $scope.errMessage = ''; 
    $scope.curDate = new Date(); 

    if(startDate < endDate){ 
     $scope.errMessage = 'End Date should be greate than start date'; 
     return false; 
    } 
    if(startDate < curDate){ 
     $scope.errMessage = 'Start date should not be before today.'; 
     return false; 
    } 

    }; 
  • tôi có loại đầu vào dưới dạng văn bản cho cả controls.I ngày đang sử dụng chọn ngày bootstrap.

Trả lời

8

làm việc Bạn có logic đảo ngược trên các bit đầu tiên và bạn phải xây dựng một ngày mới từ STARTDATE để so sánh với ngày hôm nay. Ngoài ra, bạn đặt curDate thành phạm vi, $scope.curDate = new Date() nhưng sau đó bạn đã tham chiếu nó là curDate mà không có $scope để nó không được xác định. Cuối cùng, bạn cần phải đúc stateDateendDate cho một ngày. Nếu không, bạn chỉ so sánh các chuỗi.

$scope.checkErr = function(startDate,endDate) { 
    $scope.errMessage = ''; 
    var curDate = new Date(); 

    if(new Date(startDate) > new Date(endDate)){ 
     $scope.errMessage = 'End Date should be greater than start date'; 
     return false; 
    } 
    if(new Date(startDate) < curDate){ 
     $scope.errMessage = 'Start date should not be before today.'; 
     return false; 
    } 
}; 

dụ làm việc: http://jsfiddle.net/peceLm14/

+1

Mã hơi khác so với fiddle bạn đã đăng. Nhưng điều này đã giúp rất nhiều. Vui lòng đồng bộ hóa mã bạn đăng và fiddle để nó sẽ hữu ích cho tất cả mọi người. – Kurkula

+0

Cảm ơn! Tôi quên về việc đúc các ngày trong khối đầu tiên nếu khối. –

1

Dường như bạn đang tham chiếu curDate chưa được xác định. Thay đổi điều kiện thành if (startDate < $scope.curDate). Xem fiddle ví dụ http://jsfiddle.net/4ec3atzk/1/

$scope.checkErr = function(startDate,endDate){ 
    $scope.errMessage = ''; 
    $scope.curDate = new Date(); 

    if (startDate < endDate){ 
    $scope.errMessage = 'End Date should be greate than start date'; 
    return false; 
    } 

    if (new Date(startDate) < $scope.curDate){ 
    $scope.errMessage = 'Start date should not be before today.'; 
    return false; 
    } 
}; 
+0

Tốt một cám ơn. – Kurkula

0
$scope.datepickerObjectfromdates = { 
    todayLabel: 'Today', 
    closeLabel: 'Close', 
    setLabel: 'Ok', 
    setButtonType : 'button-calm', 
    todayButtonType : 'button-calm', 
    closeButtonType : 'button-calm', 
    inputDate: new Date(), 
    mondayFirst: true, 
    templateType: 'popup', 
    showTodayButton: 'true', 
    modalHeaderColor: 'bar-calm', 
    modalFooterColor: 'bar-calm', 
    callback: function (val) { 
     var getdate = GetFormattedFromDates(val); 
     $scope.date.FromDates = getdate; 
     localStorage.date = $scope.FromDates; 

    }, 
    dateFormat: 'MM-dd-yyyy', //Optional 
    closeOnSelect: false, //Optional 
}; 
function GetFormattedFromDates(val) { 
    if(typeof(val)==='undefined') 
    { 
     $scope.date.FromDates = ''; 
    } 
    else { 

     var todayTime = new Date(val); 
     var month = todayTime.getMonth() + 1; 
     var day = todayTime.getDate(); 


     if (month < 10) { 
      month = '0' + month; 
     } 
     if (day < 10) { 
      day = '0' + day; 
     } 


     var year = todayTime.getFullYear(); 
     return day + "/" + month + "/" + year; 
    } 

} 


$scope.datepickerObjecttodates = { 

    todayLabel: 'Today', 
    closeLabel: 'Close', 
    setLabel: 'Ok', 
    setButtonType : 'button-calm', 
    todayButtonType : 'button-calm', 
    closeButtonType : 'button-calm', 
    inputDate: new Date(), 
    mondayFirst: true, 
    templateType: 'popup', 
    allowOldDates: false, 

    showTodayButton: 'true', 
    modalHeaderColor: 'bar-calm', 
    modalFooterColor: 'bar-calm', 

    callback: function (val) { 
     var getdate = GetFormattedToDates(val); 
     $scope.date.ToDates = getdate; 
     //$scope.date.ToDates = getdate.clear(); 


    }, 

    dateFormat: 'dd-MM-yyyy', //Optional 
    closeOnSelect: false, //Optional 

}; 
function GetFormattedToDates(val) { 
    if (typeof(val) === 'undefined') { 
     $scope.ToDates = ''; 
    } 
    else { 
     var todayTime = new Date(val); 

     var month = todayTime.getMonth() + 1; 
     var day = todayTime.getDate(); 


     if (day < 10) { 
      day = '0' + day; 
     } 
     if (month < 10) { 
      month = '0' + month; 
     } 
     var year = todayTime.getFullYear(); 
     return day + "/" + month + "/" + year; 
    } 

} 
1

Kiểm tra này link và nó được giải thích rõ ràng

Các vấn đề liên quan