所以,目前我正在尝试验证一个包含大约60个课程的表格,其中最高等级编号为20.因此,任何高于20的数字都会显示错误消息,说“该值太高”或一些东西。 (大多数字符串都是西班牙语,所以很抱歉。)
现在问题是,只有第一种形式得到验证,其他形式由于某种原因没有得到验证。
这是两种形式的代码,第一种形式(Trayecto Inicial)正在验证,但下一种形式(Trayecto I)不是:
<?php
if(isset($trayecto) && $trayecto == "Inicial")
{ ?>
<fieldset>
<legend><b>Trayecto Inicial</b></legend>
<table>
<form name="<?php echo $trayecto; ?>" method="POST" action="operaciones/update.php" >
<tr>
<td><label>Proyecto Nacional y Nueva Ciudadania:</label></td>
<td>
<input type="text" name="pnync" id="pnync" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['pnync']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td>
<label>Taller de Introduccion</label>
</td>
<td>
<input type="text" name="talleri" id="talleri" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['talleri']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Matematica Inicial</label></td>
<td>
<input type="text" name="matini" id="matini" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['matini']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Construccion Civil y Sociedad</label></td>
<td>
<input type="text" name="ccys" id="ccys" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['ccys']; } ?>" onkeypress="return validar(event, 'num');">
</td>
<input type="hidden" name="trayecto" value="<?php echo $trayecto."-".$row['id_persona']; ?>" />
</tr>
</table>
</fieldset>
<?php }
elseif (isset($trayecto) && $trayecto == "I")
{ ?>
<fieldset>
<legend><strong>Trayecto I</strong></legend>
<fieldset>
<table>
<form name="<?php echo $trayecto; ?>" method="POST" action="operaciones/update.php" >
<tr>
<td><h3>Trimestre I</h3></td>
</tr>
<tr>
<td><label>Tutorial de Proyecto I:</label></td>
<td>
<input type="text" name="tutopro1" id="tutopro1" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['tutopro1']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Construccion de Documento</label></td>
<td>
<input type="text" name="costdocu" id="constdocu" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['costdocu']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Matematica</label></td>
<td>
<input type="text" name="matematica" id="matematica" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['matematica']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Fisica Aplicada</label></td>
<td>
<input type="text" name="fisicaapli" id="fisicaapli" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['fisicaapli']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><br><h3>Trimestre II</h3></td>
</tr>
<tr>
<td><label>Topografia</label></td>
<td>
<input type="text" name="topografia" id="topografia" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['topografia']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Expresion Grafica y Dibujo de Proyecto</label></td>
<td>
<input type="text" name="egdp" id="egdp" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['egdp']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Estructura Organizativa del Estado</label></td>
<td>
<input type="text" name="eode" id="eode"maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['eode']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><br><h3>Trimestre III</h3></td>
</tr>
<tr>
<td><label>Mecanica</label></td>
<td>
<input type="text" name="mecanica" id="mecanica" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['mecanica']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Geografia y Habitad</label></td>
<td>
<input type="text" name="geohabitad" id="geohabitad" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['geohabitad']; } ?>" onkeypress="return validar(event, 'num');">
</td>
</tr>
<tr>
<td><label>Quimica General</label></td>
<td>
<input type="text" name="quimicagene" id="quimicagene" maxlength="2" size="10" value="<?php if($issetnotas > 0){ echo $nota['quimicagene']; } ?>" onkeypress="return validar(event, 'num');">
</td>
<input type="hidden" name="trayecto" value="<?php echo $trayecto."-".$row['id_persona']; ?>" />
</tr>
</table>
</fieldset>
我正在使用以下代码进行验证:
(我意识到这对DRY概念非常可怕,我在编程方面很新,而且我对JS或jQuery没有太多了解,所以我不知道如何更好地处理这个问题,将来必须学习。)
<script>
var ValidarNota = new LiveValidation('pnync');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('talleri');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('matini');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('ccys');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarCasc = new LiveValidation('tutopro1');
ValidarCasc.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('constdocu');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('matematica');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('fisicaapli');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('topografia');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('egdp');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('eode');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('mecanica');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('geohabitad');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
var ValidarNota = new LiveValidation('quimicagene');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
</script>
答案 0 :(得分:0)
问题是,当您的PHP代码设置为show2时,您的javascript会为form1中存在的字段抛出异常。
您需要在测试中包装每组验证(每个表单)(下面的代码假设您使用的是jquery,如果没有,请编写我正在进行的测试的相应javascript版本)
if ($('#myFormName').length > 0) {
var ValidarNota = new LiveValidation('pnync');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
// and so on for all fields that belong to "myFormName"
}
if ($('#myOtherFormName').length > 0) {
// other form validations
}
或其他(不那么优雅)你可以做的事情(这里不需要jquery顺便说一下)
<script>
try {
var ValidarNota = new LiveValidation('pnync');
ValidarNota.add(Validate.Numericality, { minimum: 0, maximum: 20, onlyInteger: true });
} catch (e) {
}
and so on for each one