JavaScript - Funcion se ejecuta 2 veces por el onkeydown

 
Vista:

Funcion se ejecuta 2 veces por el onkeydown

Publicado por Alejandro (10 intervenciones) el 24/03/2016 00:20:54
Hola que tal, tengo un problema con un control donde en el, tengo 2 funciones una en cada evento el onchange y el onkeydown, en el primero valido la fecha y en el otro solo cambia el foco al siguiente control con el enter, las 2 funcionan bien, el problema es que la función donde valido la fecha se ejecuta 2 veces osea que cuando hay una fecha invalida el cuadro de dialogo me sale 2 veces, y deseo evitar eso.

Espero y me puedan ayudar o darme una idea de como controlar el keydown, donde no este ejecutando 2 veces la función.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Funcion se ejecuta 2 veces por el onkeydown

Publicado por xve (2100 intervenciones) el 24/03/2016 17:44:04
Hola Alejandro, la verdad no se como te puedo ayudar si no nos muestras el código... en principio si se ejecuta dos veces, es que en algún momento lo llamas dos veces a la función.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funcion se ejecuta 2 veces por el onkeydown

Publicado por Alejandro (10 intervenciones) el 29/03/2016 23:16:13
HTML

1
2
3
<div class="form-group">
    <asp:TextBox ID="txtFechaAlta" runat="server" TabIndex="3" CssClass="form-control" Width="158px" Height="30px"                 ClientIDMode="Static" onkeydown="return tabOnEnter(this,event);" onchange="validarFormatoFecha(this);" ></asp:TextBox>
</div>

Javascript()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function validarFormatoFecha(control) {
    if (control.value.length == 0) return;
 
    if (!validaFecha(control.value)) {
        alert("Fecha Invalida");
    }
 
}
 
function validaFecha(Cadena) {
    var Fecha = new String(Cadena)
    var RealFecha = new Date();
    var Ano = new String(Fecha.substring(Fecha.lastIndexOf("/") + 1, Fecha.length));
    var Mes = new String(Fecha.substring(Fecha.indexOf("/") + 1, Fecha.lastIndexOf("/")));
    var Dia = new String(Fecha.substring(0, Fecha.indexOf("/")));
    var dd = ("0" + RealFecha.getDate()).slice(-2);
    var mm = ("0" + (RealFecha.getMonth() + 1)).slice(-2);
    var hoy = RealFecha.getFullYear() + "-" + (mm) + "-" + dd
    var date = Ano  + "-" + Mes + "-" + Dia;
    var f1 = new Date(date);
    var f2 = new Date(hoy);
 
    //var today = new String(hoy);
    if (isNaN(Ano) || Ano.length < 4 || parseFloat(Ano) < 1900) { return false; } // Valido el año 
    if (isNaN(Mes) || parseFloat(Mes) < 1 || parseFloat(Mes) > 12) { return false; } // Valido el Mes
    if (isNaN(Dia) || parseInt(Dia, 10) < 1 || parseInt(Dia, 10) > 31) { return false; } // Valido el Dia 
    if (Mes == 4 || Mes == 6 || Mes == 9 || Mes == 11) { if (Dia > 30) { return false; } }
    if (f1 > f2) { return false; } //Valida Fechas futuras(CurrentDate);
    if (Mes == 2 && Dia > 28) {
        bisiesto = ((Ano % 4 == 0) && ((Ano % 100 != 0) || (Ano % 400 == 0)));
        if (bisiesto && Dia <= 29) return true; else return false;
    } return true;
 
}

Ah esta funcion es la que hace que se ejecute 2 veces.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar