【问题标题】:How to check selected time in specified range?如何检查指定范围内的选定时间?
【发布时间】:2016-03-07 05:44:51
【问题描述】:

我有包含日期​​选择器和时间选择器以及一个按钮的预订页面。如果用户单击该按钮,我们需要检查所选日期和时间是否匹配商店日期和时间,如果不匹配,我需要显示应该说的消息请在此选择时间(例如:星期四:上午 9:10 - 下午 06:30)。这里我有从日期开始的日期,在这里我们已经有了商店的营业时间和关闭时间

Day: {                   
    "monday"    : "09:10AM  -  06:30PM",
    "tuesday"   : "09:10AM  -  06:30PM",
    "wednesday" : "09:10AM  -  06:30PM",
    "thursday"  : "09:10AM  -  06:30PM",
    "friday"    : "09:10AM  -  06:30PM",
    "saturday"  : "10:15AM  -  04:15PM",
    "sunday"    : "10:15AM  -  04:15PM"
    },

我没有添加日期和时间选择器假设如果用户选择低于条件 例如。 1.如果我选择日期(2015 年 2 月 12 日),控制器通过日期和用户选择的时间上午 11:00 得到了日期(星期三),我需要检查商店日期(如上所述)。选择的日期和时间匹配在商店打开和关闭时间之间,所以我们不想显示任何消息 bcoz 用户选择了正确的时间。 2.如果我选择日期(2015 年 3 月 12 日),控制器我通过日期和用户选择的时间 08:00 pm 我得到了日期(星期四)我需要检查商店日期(如上所述)。选择的日期和时间确实商店的营业时间和关闭时间不匹配,所以我需要在这里发出警报,它会显示(抱歉商店现在关门,商店营业时间:上午 9:10 和商店关闭时间:下午 6:30,请选择这之间的时间)。 我是编程新手,我已经尝试了 3 天,请帮帮我。

$scope.check=function(){

//Assume This is Shop details We need to check with this data 
  $scope.dealers = [{

        S_Email_id: "aditiya@gmail.com",
        S_Store: "samsung",
        status:"",
        Store_Name: "Adtiya Samsung Store",
        S_Services: "Regular Service,Software Faults,Hardware Faults",
        Store_long_description: "Undertake all kind of samsung mobiles",
        Store_short_description: "Undertake all kind of samsung mobiles",
        Day: {
        "monday": "09:10AM - 06:30PM",
        "tuesday": "09:10AM - 06:30PM",
        "wednesday": "09:10AM - 06:30PM",
        "thursday": "09:10AM - 06:30PM",
        "friday": "09:10AM - 06:30PM",
        "saturday": "10:15AM - 04:15PM",
        "sunday":"10:15AM - 04:15PM"
        },
    }];

    //Condtion one 
        var sdate =userselecteddate;
        console.log(sdate);
        //here i am getting Wed Dec 02 2015 00:00:00 GMT+0530 (India Standard Time)
        var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
        var nData = new Date(sdate);
        console.log(dayNames[nData.getDay()]);
        //Wednesday

        var stime=userselectedtime;
        console.log(stime);//11:00am

        //Condtion Two 
        var sdate =userselecteddate;
        console.log(sdate);
        //here i am getting Thu Dec 03 2015 00:00:00 GMT+0530 (India Standard Time)
        var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
        var nData = new Date(sdate);
        console.log(dayNames[nData.getDay()]);
        //Thursday

        var stime=userselectedtime;
        console.log(stime);
        //08:00pm



        //cheching code 


}

上面我根据条件显示了我在控制台中得到的帮助我前进

【问题讨论】:

    标签: javascript jquery angularjs


    【解决方案1】:

    在您捕获用户输入的日期和时间值之后,假设这些值以某种方式存储在$scope 中:

    $scope.isValidDate = function isValidDateFn(dateVal) {
      //Logic here that returns whether or not you have a valid time;
      return booleanThatIsTrueOrFalseBasedOnTheOfficeHours;
    };
    
    $scope.isValidTime = function isValidTimeFn(timeVal) {
      return booleanThatIsTrueOrFalseBasedOnTheOfficeOpenDays;
    };
    
    $scope.isValidOfficeDateTimeSubmission = function isValidOfficeDateTimeSubmissionFn(dateString, timeString) {
      var validTime = $scope.isValidTime(timeString),
          validDate = $scope.isValidDate(dateString);
    
      var validationObject = {
          errors: [], 
          valid: validTime && validDate
      }
    
      if (!validTime) {
         validationObject.errors.push("Invalid Time Message With Whatever Else You Want To Put In Here")
      }
    
      if (!validDate) {
         validationObject.errors.push("Invalid Date Message With Whatever Else You Want To Put In Here")
      }
    
    
      return validationObject
    };
    

    逻辑由您确定,但这是一种相当不错的方法,可以通过validationObject 检索两种错误消息或仅检索一种类型。然后,您将拥有一个通过 ng-click 调用的范围函数,该函数运行它,检查从 isValidOfficeDateAndTimeSubmission 函数返回的 valid 属性,然后根据内容执行任何错误显示、成功等的验证对象。

    $scope.userDidAttemptToSubmitDateTime = function userDidAttemptToSubmitDateTimeFn(){
      //Given that your date and time live in $scope.
      var validationObject = $scope.isValidOfficeDateTimeSubmission($scope.dateVarBoundFromInputInHTML, $scope.timeVarBoundFromInputInHTML); 
    
      //Now use the properties in your validationObject to do whatever the heck you want to show the user
    
     if (validationObject.errors.length) {
       $scope.showErrorsToUserWithArbitraryErrorStringArray(validationObject.errors);
     } else {
       $scope.showSuccessfulSelectionMessageWithPotentialCallbackIfYouWantedTo(callBackFn);
     }
    }
    

    【讨论】:

    • 你能帮我加个jsfiddle吗,因为我不明白
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多