在验证不起作用时表单


Form in while validation doesn't work

我正在尝试验证"修改"表单。数据是从数据库中接收的,所以我当然必须把它放在一段时间内。

<?php
    while ($row = mysql_fetch_array($categories))
    {
    ?>
<form name="adminEditCategory" action="../db/adminModifyCategory.php" method="POST"  enctype="multipart/form-data"  >
    <tr>    
    <td>

    <input type="text" name="id" value="<?php print $row['id']; ?>" readonly="readonly" style="width: 20px;" />
    </td>
    <td> <input type="text" name="name<?php print $row['id']; ?>" value="<?php print $row['name']; ?>" /><span></span>
    </td>
    <td> <img src="../utils/getLogoCategory.php?id=<?php print $row['id']; ?>"  style="max-width:40px; max-height:40px; float: left; margin-bottom: 10px;" align="left" /> </td>
    <td>
    <input type="file" name="attachment<?php print $row['id']; ?>" value="" style="float: right; "><span></span>
    </td>
    <td> <?php print date('d-m-Y', strtotime($row['added_date'])); ?>
    </td>
    <td> 
    <select width="294" name="is_deleted<?php print $row['id']; ?>"  style="width: 50px;">
                    <?php               
                        foreach($is_deleted as $id=>$name)
                        {
                        ?>
                            <option value="<?php print $id; ?>" <?php if($id == $row['is_deleted']) print "selected= 'selected'"; ?> ><?php print $name; ?></option>
                            <?php
                        }
                    ?>
                  </select><span></span>
    </td>
    <td> <input type="submit" value="Modifica" name="Edit" class="button" onClick="return validateEditCategory(<?php print $row['id']; ?>)" /> 
    <input type="submit" value="Sterge" class="button"  name="Delete" onClick="return validateDeleteCategory()">
    </td>
    </tr></form>
    <?php
    }
    ?>

这是验证码:

function validateEditCategory(Id)   {
    var valid;
        valid = true;
        // alert (document.forms["adminEditCategory"]["name"+Id].name);
        valid *= checkNume(document.forms["adminEditCategory"]["name"+Id]);
        valid *= checkIsFileGol(document.forms["adminEditCategory"]["attachment"+Id]);  
        return valid > 0;
    }

验证有效,但仅适用于第一行。我不明白为什么它不验证其余行。

尝试更改此<form name="adminEditCategory" action=
到这个<form name="adminEditCategory<?php print $row['id']; ?>" action=

document.forms["adminEditCategory"]
到这个document.forms["adminEditCategory" + Id].


替换时,您可以减少附加到输入名称的所有 ID。关键是,为所有表单指定不同的名称,但是在每个表单中,您可以对所有字段进行相同的调用,因为您已经在<input name='id'>中传递了ID。但这不是必需的,只是更短,更合乎逻辑。