2013-12-03 3 views
0

사용자가 선택할 시간 프레임 목록이 있으면 선택한 시간이 맞는지 확인하고 선택한 것을 유효하게하려고합니다. 시간은 다음 기준 프레임 :하지 전에 지금 즉jQuery 자바 스크립트를 사용하여 선택한 시간의 유효 기간이 과거와 현재 시간보다 적어도 30시 이전이 아닌 경우

1)이 아니라 과거에() 현재 시간보다 30 분 이상 커야합니다
2) 선택한 시간

Here is the HTML snippet from my form: 
<select id="callBackTime" tabindex="9" name="callBackTime"> 
<option value="8:00 AM - 8:30 AM">8:00 AM - 8:30 AM</option> 
<option value="8:30 AM - 9:00 AM">8:30 AM - 9:00 AM</option> 
<option value="9:00 AM - 9:30 AM">9:00 AM - 9:30 AM</option> 
<option value="9:30 AM - 10:00 AM">9:30 AM - 10:00 AM</option> 
<option value="10:00 AM - 10:30 AM">10:00 AM - 10:30 AM</option> 
</select> 

내가 내 자신의 규칙을 추가하려면 jQuery.validator.addMethod()를 사용하고 이것은 내가 지금까지 가지고있는 것입니다 :

Here is my JQuery Custom rule Validation so far: 
$.validator.addMethod (
    "timeToCall", 
    function(value, element) { 
    var timeSelected = $('#callBackTime').val(); 
    var today = new Date(); 
    var currentTime = today.getHours() + ':' + today.getMinutes(); 
    return Date.parse(timeSelected) > Date.parse(currentTime); 
    }, 
    "*Please select a later time." 
); 

Here is the code to trigger the validation: 
    $('#submit').click(function(e) { 
    $("#supportCallBackForm").validate({ 

     rules: { 
     callBackTime: { timeToCall : true } 
     }, 

    submitHandler: function(form) { 
    // do other things for a valid form 
    submitCallBackSupportRequest(); 
    return false; 
    } 
    }); 
}); 

내 사용자 정의 .validator 메소드가 대부분의 도움이 필요한 부분이라고 생각합니다. 사용자가 선택한 항목과 현재 시간을 정확하게 비교하는 방법을 알지 못합니다. 또한 선택한 시간은 적어도 지금부터 30 분 이상이어야합니다. 어떤 도움이라도 대단히 감사합니다.

답변

0

몇 가지 변경 사항을 제안합니다. 물론,

<select id="callBackTime" tabindex="9" name="callBackTime"> 
    <option value="20:00 - 20:30">8:00 PM - 8:30 PM</option> 
    <option value="20:30 - 21:00">8:30 PM - 9:00 PM</option> 
    .... 
    .... 
    <option value="08:30 - 09:00">8:30 AM - 9:00 AM</option> 
</select> 

통지를 다음과 같이 당신이 당신의 선택을 할 수있는 경우, 한 자리 시간

의 두 자리 그것은 구문 분석하는 것이 훨씬 쉽게 만들 것입니다 첫째. 귀하의 유효성 검사기에서

당신이 실제로 그래서 나는 확실히 당신이 그들과 여부를 곱 전에 문자열을 구문 분석 할 수 있는지 여부, 결과 하위 문자열을 확인 할이 코드를 실행하지 않은이

$.validator.addMethod (
    "timeToCall", 
    function(value, element) { 
    var now = new date(); 
    var timeSelected = $('#callBackTime').val(); 
    var startHour = timeSelected.substr(0,2); 
    var startMin = timeSelected.substr(3,2); 
    var endHour = timeSelected.substr(9,2); 
    var endMin = timeSelected.substr(12,2); 
    // depending on whether you are interested in the beginning of the timespan or the end 
    var startTimeInMinutes = (startHour * 60) + startMin; 
    var targetTimeInMinutes = (now.getHours() * 60) + now.getMinutes(); 
    return startTimeInMinutes + 30 > targetTimeInMinutes; 
}, 
    "*Please select a later time." 
); 

같이 할 수 * 실행하기 전에 +

나는 그런 것들을 빨아 먹는다.

더 많은 정보가 필요하면 알려주세요.

0

moment.js을 살펴보십시오. 당신은 통화 시간은 "시간과 분"은 "바닥"로 830을 구문 분석하는 경우 사용자가 8:30 - 9:00을 선택한 경우 당신에게, 그리고

var smallestAllowedTime = moment().add("m",30); 

: 당신은 플러스 삼십분이 방법으로 현재 시간을 얻을 수 있습니다 비교를 매우 쉽게 할 수 있습니다.

var hour = 8; // parsed from selection 
var minute = 30; // parsed from selection 
var userSelectedTime = moment().set("hour",hour).set("minute",minute); 
return userSelectedTime.isAfter(smallestAllowedTime); 

이것은 아직 오전/오후 또는 시간대를 고려하지 않습니다.