MySQL的时间验证范围

Time Validation Range form MySQL

本文关键字:范围 验证 时间 MySQL      更新时间:2023-09-26

这是我的JavaScript:

<SCRIPT TYPE="text/JavaScript">
    function validateHhMm(inputField) {
        var time= $("#time").val();
        var isValid = /^(time)?$/.test(inputField.value);
        if (isValid) {
            inputField.style.backgroundColor = '#bfa';
        } else {
            inputField.style.backgroundColor = '#fba';
        }
        return isValid;
    }
</SCRIPT>

PHP脚本:

 <?php
            include 'connect.php';
            $time = " SELECT * from schedule where id_ship=24";
            $show_time = mysql_query($time);
            $row = mysql_fetch_array($show_time);
    ?>
    <input type="text" onchange="validateHhMm(this);"  name="time" id="time" value="
      <?php 
        echo $row['time_coming'];
      ?>">

这个时间表

id_ship     |  time_coming |
----------------------------
24          |  11:10:02    |

我想再次输入表单时间。有效值必须等于或高于11:10:02。11:10:02下的值无效。那么,我应该在JavaScript中做什么呢?

您需要在服务器端和客户端上验证时间。

让我们更改JavaScript函数,使其可以接受最小值。

<SCRIPT TYPE="text/JavaScript">
    function validateHhMm(inputField, minValue) {
        var time= $("#time").val();
        var isValid = /^(time)?$/.test(inputField.value);
        if (!isValid || inputField.value < minValue) {
            inputField.style.backgroundColor = '#fba';
        } else {
            inputField.style.backgroundColor = '#bfa';
        }
        return isValid;
    }
</SCRIPT> 

因此,如果inputField.value没有验证您的regex,或者不是小于最小值的时间,则它被视为无效。

现在,将最小值传递给JavaScript,使用:

<input type="text" onchange="validateHhMm(this,<?php echo $row['time_coming'];?>);"  name="time" id="time" value="
      <?php 
        echo $row['time_coming'];
      ?>">

好吧,既然JavaScript已经过验证,那么您还需要通过PHP进行验证。

您没有为post页面发布任何代码,但验证看起来类似于:

if ($_POST['time'] < $your_row['time_coming'])
    die("Invalid time posted")

假设您有:

<input type="text" onchange="validateHhMm(this);"  ... >

然后将对元素的引用传递给函数,因此在函数中:

var time= $("#time").val();

与相同

var time = inputField.value;

您所在的位置:

var isValid = /^(time)?$/.test(inputField.value);

您正在将inputField的值测试为文字字符串"time",这几乎肯定是错误的。如果你想测试时间是否有效(即小时是0到23,分钟是0到59),你可以尝试:

function validateHHMM(s) {
  var b = s.split(':');
  return /^'d'd:'d'd$/.test(s) &&   // Check format is nn:nn
         b[0] < 24 && b[0] > -1 &&  // Check hours are 0 to 23 inclusive
         b[1] < 60 && b[1] > -1     // Check minutes are 0 to 59 inclusive
}

以上内容可以在一个正则表达式中完成,但当其他人必须维护代码时,简单性很重要。

一旦输入有效,就可以比较这些值。