这是在一次提交中提交多个成绩的代码
这是前验证的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 :(得分: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(或使用浏览器开发绕过验证的工具。)
答案 1 :(得分:0)
在第一个区块中我注意到:
您将x设置为字符串...后来将其作为数字/ int进行比较。设置x时删除撇号。
在第二个区块中,我注意到您在查询中只使用了$ id,而没有先设置(并清理)它。