[英]PHP repeating forms validation. How to validate using javascript?
我有一個重復的表格。 我已經使用Java腳本在表單中添加了驗證,但是在其他表單驗證之前,我必須在第一個表單中輸入信息。 我希望每個驗證過程在每個表單上都分開。 我嘗試了許多不同的方法,但都失敗了。 謝謝
下面的PHP / html代碼:
$prodid = $row['id'];
echo'<tr class="notetr3">';
echo '<form action="insertlink.php" method="post" name="' . $prodid. '" onSubmit="return newchoose1(' . $prodid. ')" >';
//first column (Company name)
echo '<td><select name="companyid" id="companyid"><option value="">Select Company</option>';
$result = mysql_query("
SELECT * FROM company
WHERE id NOT IN
(SELECT DISTINCT companyid FROM joincomppro WHERE productid = '$prodid')
"); //select productid that matches productid table
while ($row = mysql_fetch_array($result)){
$compid = $row['id'];
$num_rows = mysql_num_rows($result);
$sqlcompany2 = mysql_query("SELECT * from company WHERE id = '$compid'");
while ($row = mysql_fetch_array($sqlcompany2)){
$companyname = $row['companyname'];
if ($num_rows) {
echo '<option value="' . $compid . '">' . $companyname . '</option>';
}
}
}
echo '</select></td>';
//Second column (Batch size)
echo '<td><input type="text" value="Batch Size" name="batchsize" id="batchsize" size="17" maxlength="40"/></td>';
//third column (Batch price)
echo '<td><input type="text" value="Batch Price" name="batchprice" id="batchprice" size="17" maxlength="40"/></td>';
//fourth column
echo '<td><input type="text" value="Unit Price" name="unitprice" id="unitprice" size="17" maxlength="40"/></td>';
//hidden value
$groupselect3 = mysql_query("SELECT * FROM product WHERE categorysubtype = '$categorysubtype' AND productname = '$productname' AND colour = '$colour'");
while($row = mysql_fetch_array($groupselect3))
{
echo '<input type="hidden" name="productid" id="productid" value="' . $row['id'] . '"/>';
echo '<input type="hidden" name="groups2" id="groups2" value="' . $group . '"/>';
}
//submit
echo '<td><input type="submit" name="' . $prodid . '" value="Submit" /></td></tr>';
echo '</form>';
然后,我具有如下所示的JavaScript函數:
function newchoose1(id) {
var emptyvalue = "";
if (document.getElementById('companyid' + id).value == "") {
emptyvalue += "Select a Company \n";
}
if (document.getElementById('batchsize' + id).value == "") {
emptyvalue += "Enter a batch size \n";
}
if (isNaN(document.getElementById('batchsize' + id).value)) {
emptyvalue += "Batch Size has to be a whole number \n";
}
if((document.getElementById('batchprice' + id).value == "Batch Price" ) && (document.getElementById('unitprice' + id).value == "Unit Price")){
emptyvalue += "Enter a number in Batch Price or Unit Price \n";
}
else if ((document.getElementById('batchprice' + id).value == "Batch Price") && (isNaN(document.getElementById('unitprice' + id).value))){
emptyvalue += "Unit price has to be a valid number \n";
}
else if((document.getElementById('unitprice' + id).value == "Unit Price") && (isNaN(document.getElementById('batchprice' + id).value))){
emptyvalue += "Batch price has to be a valid number \n";
}
else {}
if (emptyvalue != "") {
alert (emptyvalue);
return false;
}
}
一種方法是將$prodid
添加到每個表單元素控件(例如“ companyid”),以確保每個表單控件都是唯一的,並因此可以被JavaScript找到。 然后只需在對newchoose1()
調用中包含$prodid
即可。
像這樣:
echo '<form action="insertlink.php" method="post" name="' . $prodid. '" onSubmit="return newchoose1(' . $prodid . ')" >';
// ...
echo '<td><select name="companyid" id="companyid' . $prodid . '"><option value="">Select Company</option>';
...和:
function newchoose1(id) {
// ...
if (document.getElementById('companyid' + id).value == "") {
// etc....
另一種方法是類似地將$prodid
傳遞給newchoose1()
但無需更改表單控件,而是將表單內的ID更改為類,然后在特定表單內獲取具有給定類的元素(我建議切換到jQuery以簡化您的生活)。 這樣做的好處還在於允許您在不同的表單之間呈現具有相同樣式的相同表單控件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.