0

Web サイトを修正/再設計しようとしていますが、何が問題なのかわかりません。これは、日 (dia)、月 (mes)、年 (anyo) の 3 つの入力と、送信ボタン (#btn_entrar) を備えた年齢ゲートです。Firefox、Safari、Explorer では完全に動作しますが、Chrome では、ユーザーが 18 歳未満の年齢になると、アラートを表示する代わりに、すべてを無視して #page2 をロードします。私は読んでいて、それは .click(function() 部分かもしれないと思いますが、それを理解することはできません (私は JavaScript を学んでいます)。コードは次のとおりです。

$('#btn_entrar').click(function() { 
    var dia=("0" + $("#dia").val()).slice (-2);
    var mes=("0" + $("#mes").val()).slice (-2); 
    var anyo=("000" + $("#anyo").val()).slice (-4);

    var fecha_nac=dia+'/'+mes+'/'+anyo;
    var curr = new Date();

    var txtVal = mes+'/'+dia+'/'+anyo;

    if (anyo<1900) { alert("Fecha no válida."); exit(); }       
    if (isDate(txtVal)==false) { alert("Fecha no válida."); exit(); }

    curr.setFullYear(curr.getFullYear() - 18);
    var dob = Date.parse(fecha_nac);

    if((curr-dob)<0)
    {
        alert("Se requiere tener más de 18 años para acceder a la web.");
}
    else
    {   
        $('#page1').delay(0).fadeOut(1500);         

        // Cargar pagina 2
        $('#page2').delay(1300).fadeIn(1500);
        $('#cabecera').delay(1000).fadeIn(1500);  // mostrar avioneta       
    } 
}); 

ヒントやヘルプをいただければ幸いです。

4

1 に答える 1

1

これはおそらくロケールの問題です。を使用する代わりに、次のDate.Parse()ようなものを使用してみてください

anyo = int.Parse(anyo, 10);
mes = int.Parse(mes, 10);
dia = int.Parse(dia, 10);
var dob = new Date(anyo, mes - 1, dia);

代わりは。

コンストラクターの月数は 1 ~ 12 ではなく、0 ~ 11 であることmes - 1に注意してください。Date(year, month, day)

于 2013-04-19T15:50:36.683 に答える