具有 jquery 延迟错误的表单验证



我有一个验证HTML表单的函数,问题是显示警报div的2倍。为什么?。如果我更改延迟,问题也会根据哪个字段为空而改变。我的代码上有什么错误?

提前谢谢。

Javascript 函数:

function mostrar(){
            $(".ui-widget").show("drop", { direction: "up" }, "slow") 
            $(".ui-widget").delay(5000) 
            $(".ui-widget").hide( "drop", { direction: "down" }, "slow" ); 
}
function check()
        {
            if (!replace.NumeroDeGolpeReemplazo.value) {                    
                mostrar();      
                return false;
            }
            else if (!replace.NumeroDeGolpeReemplazar.value){               
                mostrar();                                
                return false;  
            }
            else
            return true;
        }

HTML 和 PHP

<form name="replace" action="replace.php" onsubmit="return check();" method="post">
<table><tbody><h2>Motor a reemplazar</h2>
<tr><td>N° de Golpe del motor de reemplazo:</td><td><input type="text"             name="NumeroDeGolpeReemplazo" id="NumeroDeGolpeReemplazo" /></td></tr>
<tr><td>N° de Golpe del motor a reemplazar:</td><td><input type="text"     name="NumeroDeGolpeReemplazar" id="NumeroDeGolpeReemplazar" /></td></tr>
<tr><td>Ubicación:</td><td><select name="Ubicacion"><option value="">Seleccione lugar de     reparación</option>
<?php
$tsql = "SELECT * FROM [Ubicacion]"; 
$stmt = sqlsrv_query($conn, $tsql);
$numFields = sqlsrv_num_fields( $stmt );
while( sqlsrv_fetch( $stmt )) {
   for($i = 0; $i < $numFields; $i++) {
        $paso = sqlsrv_get_field($stmt, $i);
        if($paso==$datos[54]){
            echo "<option value='".$paso. "' selected>".$paso."</option>" ;  
        }
        else{
            echo "<option value='".$paso. "'>".$paso."</option>" ;   
        }
     }
}
@sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?></select></td></tr>
<tr><td></td><td><input value="Reemplazar" type="submit" name="replacebutton"/> </td>    </tr>
</tbody></table></form><div class="ui-widget">
    <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> 
        <p>
            <span class="ui-icon ui-icon-alert" 
            style="float: left; margin-right: .3em;"></span>
            <strong>Alerta:</strong> Debe incluir N° de Golpe Valido
        </p>
    </div>
   </div>

小提琴:http://jsfiddle.net/nnopazo/FUGf3/5/

我很

确定你的代码只是按顺序调用显示和隐藏。 delay() 调用仅影响链中的下一个。

试试这样吧:

function mostrar(){
        $(".ui-widget").show("drop", { direction: "up" }, "slow") 
          .delay(5000) 
          .hide( "drop", { direction: "down" }, "slow" ); 
}

最新更新