2013-05-20 30 views
-1

驗證變量它是在一次提交提交幾個等級的碼
這是JavaScript代碼前驗證與JavaScript

function validateForm() { 
    var x='<?php echo ($grade);?>'; 

    if (x>100) { 
     alert("Invalid Data Entry"); 
     return false; 
    } 

它不訪問變量等級在第三回波向下

<form name="form1" method="post" action="insertgradeac.php"onsubmit="return validateForm()" method="post"> 

<?php 
    $con = mysql_connect($server, $username, $password); 
    mysql_select_db($database); 

    $query_fetch5 = "SELECT ass_class FROM assess WHERE ass_ID LIKE '$id'"; 
    $result_fetch5 = mysql_query($query_fetch5); 
    $row5 = mysql_fetch_row($result_fetch5); 
    $row5_0 = $row5[0]; 

    $query_fetch = "SELECT st_ID, st_name FROM student WHERE class_ID LIKE '$row5_0'"; 
    $result_fetch = mysql_query($query_fetch); 

    while ($row = mysql_fetch_row($result_fetch)) { 
     echo "<tr>\n"; 

     echo "<td>$row[0]<input type=\"hidden\" name=\"stt_ID[]\" value=\"$row[0]\" /></td>\n"; 
     echo "<td>$row[1]<input type=\"hidden\" name=\"student[]\" value=\"$row[1]\" /></td>\n"; 
     echo "<td><input type=\"text\" name=\"grade[]\" /></td>\n"; 
     echo "</tr>\n"; 
    } 


    mysql_close($con); 
?> 
+0

歡迎來到Stack Overflow。該JS函數將在瀏覽器中運行,但它試圖訪問一個PHP變量,該變量在表單提交到Web服務器之前不會被設置。 – nnnnnn

+0

您粘貼的javascript無效。首先,在validateForm()函數中,您實際上只是將'x'分配給一個字符串,然後檢查它是否大於100.其次,代碼末尾的'?>'是一個PHP結束標記,不屬於在JavaScript腳本中。我認爲你誤解了如何PHP和JavaScript交互給予第一次運行在服務器上,後者在客戶端瀏覽器 – neelsg

回答

1

該JS函數將在瀏覽器中運行,但它試圖訪問一個PHP變量,直到表單提交到Web服務器之後纔會被設置。

試試這個:

function validateForm() 
{ 
    var grades = document.getElementsByName("grade[]"); 
    for (var i = 0; i < grades.length; i++) { 
    if (Number(grades[i].value) > 100) { 
     alert("Grades cannot be more than 100."); 
     return false; 
    } 
    } 
    return true; 
} 

我使用getElementsByName() method把所有的grades[]元素的列表,然後我遍歷測試他們自己的價值觀和顯示警報,如果值是沒有好。

你實際上並沒有說你如何打電話給validateForm(),但我假設你是從你的表單的提交事件中這樣做的。

請注意,您還應該添加一些代碼以確認輸入的值實際上是一個數字,並且您需要在服務器端PHP代碼中執行相同的驗證,以防用戶關閉JS(或使用瀏覽器開發工具來繞過你的驗證)。

+0

完美的謝謝你 –

0

在第一個塊,我注意到:

您x設置爲一個字符串......後來它比較爲數字/ INT。設置x時刪除撇號。

在第二個區塊中,我注意到您沒有先設置(和清理)它,而是在您的查詢中使用了$ id。

+0

它沒有解決問題,我認爲問題是在變量級別訪問它作爲輸入的形式或一個PHP變量 –

+0

當php處理爲html/javascript併發送到您的服務器時,您是否已經在瀏覽器中查看了「查看源代碼」以查看javascript是否如預期的那樣?請向我們展示去瀏覽器的HTML –

+0

我只是沒有寫在這裏無論如何沒有問題在設置成績一切都工作完美只是驗證不起作用 –