MySQL的时间验证范围

时间:2014-11-01 05:57:59

标签: javascript php mysql

这是我的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中做些什么呢?

2 个答案:

答案 0 :(得分:0)

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

让我们更改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没有验证您的正则表达式,或者不是小于最小值的时间,则认为它无效。

现在,使用:

将最小值传递给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")

答案 1 :(得分:0)

鉴于你有:

<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
}

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

输入有效后,您可以比较这些值。