Hola a todos.
Quería hacer una consulta a ver si alguien me puede echar una mano. He de decir que de Javascript no he visto nada en el foro...
La cuestión es que tengo una página en PHP con trozos de Javascript que funcionan bien.
Sin embargo, estoy con una cosa que me tiene bastante mártir y tiene que ser alguna tontería, pero no veo el fallo.
Estoy con una función de validación de DNI y funciona correctamente, pero quiero hacer la validación todavía mejor y que al pulsar el botón, no se ejecute nada si el DNI es incorrecto.
La función la tengo en un .js aparte, que se llama
dni.jsEsto es lo que contiene:
function nif(eldni) {
var letra = "";
letra = eldni.substr(0,1);
if ((letra == "X") || (letra == "Y") || (letra == "Z"))
{
switch (letra)
{
case "X": eldni = eldni.replace("X","0");
break;
case "Y": eldni = eldni.replace("Y","1");
break;
case "Z": eldni = eldni.replace("Z","2");
break;
}
calcula(eldni);
}
else
{
calcula(eldni);
}
}
function calcula(eldni)
{
numero = eldni.substr(0,eldni.length-1);
let = eldni.substr(eldni.length-1,1);
numero = numero % 23;
letra='TRWAGMYFPDXBNJZSQVHLCKET';
letra=letra.substring(numero,numero+1);
if (letra!=let.toUpperCase())
{
jAlert( 'DNI/NIE Incorrecto','AVISO: _Intranet',0);
x=0;
return x;
}
else
{
return 1;
}
}
La función como digo, funciona correctamente y hace la validación bien.
En la página PHP, es donde tengo el fallo que ahora lo señalo (no pongo todo, pero sí lo importante):
<?php include('cabecera.php');
if ($_SESSION['et']== 0 || $_SESSION['et']==null)
{ ?>
<br /><br /><br /><br /><br />
<div align="center" style="width: 50%; margin-left: 9%">
<br /><br /><br />
<font style="font-size: 15px; background: #CC0033" class="" color="#FFFFFF"> UD. no dispone de privilegios para acceder a este módulo. </font>
<br /><br /><br /><br />
</div>
<?php
session_destroy();
pg_close($c);
include('pie.php');
//return to login
echo "<script type='text/javascript'>
function redireccionar()
{window.location='login.php';}
setTimeout ('redireccionar()', 5000); //tiempo expresado en milisegundos
</script>";
exit;
}
?>
<script type="text/javascript" src="js/dni.js"></script>
<script type="text/javascript" src="js/AjaxCode.js"></script>
<script type="text/javascript" src="js/situ_existeDni.js" ></script>
<script type="text/javascript" src="js/enviaSitu.js" ></script>
<script language="javascript">
function settransi2()
{
var dni = document.situtras.dniST.value; -> Esto sí lo ejecuta correctamente.
alert(nif(document.situtras.dniST.value)); Al llamar a la función, no hace NADA
}
...
<div style="float: left">
<font size="2" face="Tahoma" color="#FF002A">*</font>
<font class="frmEtiquetaCampo1">DNI/NIE/NIF: </font>
<input id="dniST" name="dniST" type="text" size="12" font style= "text-transform: uppercase" class="borde1SolidoApl1" maxlength="9" onblur="nif(document.getElementById('dniST').value)" />Aquí sí va al .js y hace la validación correctamente
<input class="boton" type="button" value=" Consultar " name="Consultar" onclick="settransi2(); "/>Esta es la función que está más arriba
</div>
<!--***********div oculto que mostrará una imagen para efecto de transición ****************** -->
<div id="loading" name="loading" style="visibility: hidden; float: left;">
<img src="images/loading.gif">
</div>
...
Lo señalado con negrita es la clave. El Alert, al intentar ejecutar la función que está en dni.js,
no hace nada. Y claro, el objeto me sale como "undefined". No me devuelve ni un 0 (que es un error) o un 1 (que es correcto).
¿Se os ocurre alguna idea?
Muchas gracias y un saludo.