2014-11-01 93 views
0

這是我的JavaScript:時間驗證範圍形式的MySQL

<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中做什麼?

+0

理解你想要的東西並不是很清楚。你能詳細說明一下嗎? – 2014-11-01 06:13:32

回答

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也是如此。

你沒有張貼帖子頁面的任何代碼,但驗證看起來類似於:

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

既然你有:

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

那麼你傳遞一個參考到功能的元素,所以在功能:

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

是相同的:

var time = inputField.value; 

如果您有:

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

你inputField測試的值以文本字符串「時間」,這幾乎可以肯定是假的。如果你想測試的時間是一個有效時間(即時間爲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 
} 

以上可以在一個單一的正則表達式來完成,但當其他人必須維護代碼時,簡單性很重要。

一旦輸入有效,您就可以比較這些值。