使用livevalidation.js验证多个表单,但只有第一个表单有效

时间:2014-01-11 02:31:19

标签: javascript php jquery forms validation

所以,目前我正在尝试验证一个包含大约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>

1 个答案:

答案 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