0

基本的に、「時間」00-23 と「分」を 5 の倍数で選択できる 2 つのテキスト ボックスがあります。

私が達成しようとしているのは、現在の日時から 2 時間以内に予約できないようにする検証です。そのため、時刻が現在 14:00 で、15:30 の予約をしようとすると、警告メッセージが表示されます。2 時間後、たとえば 16:00 であれば問題ありません。

23:00 より 2 時間大きい時間値は 01:00 であるため、jQuery でこれを達成する方法がわかりません。

これに関するヘルプは大歓迎です。

HTML コードは次のとおりです。

<div class="div-jtime-content div-content left div-subrow-style ui-corner-all">

    <label for="txt-outbound-date" class="left p-input-label" >Date: </label>

    <input type="text" id="txt-outbound-date" name="txt-outbound-date" class="input-txt-sml left required" />

    <label class="left p-input-label">Time: </label>

    <select name="sel-outbound-hour" id="sel-outbound-hour" class="required input-select">

        <option value="" selected="selected"></option>

        <option value="00">00</option>

        <option value="01">01</option>

        <option value="02">02</option>

        <option value="03">03</option>

        <option value="04">04</option>

        <option value="05">05</option>

        <option value="06">06</option>

        <option value="07">07</option>

        <option value="08">08</option>

        <option value="09">09</option>

        <option value="10">10</option>

        <option value="11">11</option>

        <option value="12">12</option>

        <option value="13">13</option>

        <option value="14">14</option>

        <option value="15">15</option>

        <option value="16">16</option>

        <option value="17">17</option>

        <option value="18">18</option>

        <option value="19">19</option>

        <option value="20">20</option>

        <option value="21">21</option>

        <option value="22">22</option>

        <option value="23">23</option>

    </select>

    <select name="sel-outbound-min" id="sel-outbound-min" class="required input-select">

        <option value="" selected="selected"></option>

        <option value="00">00</option>

        <option value="05">05</option>

        <option value="10">10</option>

        <option value="15">15</option>

        <option value="20">20</option>

        <option value="25">25</option>

        <option value="30">30</option>

        <option value="35">35</option>

        <option value="40">40</option>

        <option value="45">45</option>

        <option value="50">50</option>

        <option value="55">55</option>

    </select>

</div>
4

1 に答える 1

2

Date objectこれから行うことは、比較を使用して簡単に行うことができます。正確に 2 時間が必要な場合は、次の方法を試してみる価値があります。

function findTS() {
   var ts = new Date();
   ts.setHours($("#sel-outbound-hour").val());
   ts.setMinutes($("#sel-outbound-min").val());
   return ts;
}
function isInTwoHourDelay(ts) {
   var current = new Date();
   if ((current.getTime() - ts.getTime()) > 7200000) return false;
   return true; 
}

最初の関数は、時間を Date オブジェクトに変換します。これにはサニタイズを追加する必要があることに注意してください。これには重要なビットが含まれているだけです。

2 番目の関数は、現在の時刻を指定された TS と比較します。ここで、指定さgetTimeれた TS の UNIX エポックからのミリ秒が返されます。つまり、2 時間は 7200 秒なので、7200000 ミリ秒です。

于 2013-05-15T13:37:31.610 に答える