2013-04-24 2 views
3

Я пытаюсь использовать модуль, называемый отказ от ответственности в Drupal 7, но Alert «Вы должны ввести год, в котором вы родились». Показывает дважды, а затем переходит к перенаправлению на URL-адрес, который вы не должны видеть до тех пор, пока не убедитесь, что вам больше 18.Предупреждение Javascript появляется дважды

Я пробовал предложения, и он все еще показывался дважды. Я думаю, что проблема может быть действием кнопки ввода. Вот для этого функция.

Drupal.behaviors.disclaimer = { 
    attach: function (context, settings) { 
    // action on enter button 
    $('#disclaimer_enter', context).click(function() { 
     var check = true; 
     // age form is set 
     if (settings.disclaimer.ageform == 1) { 
     var check = Drupal.checkAge(); 
     } 
     // everything good, add cookie and close colorbox 
     if (check) { 
     $.cookie(settings.disclaimer.cookie_name, '1', { path: settings.disclaimer.cookie_path }); 
     $.colorbox.remove(); 
     } 
    }); 
    }, 
}; 

}

Drupal.checkAge = function() { 
    var now = new Date(); 
    var date = now.getDate(); 
    var month = now.getMonth() + 1; 
    var year = now.getFullYear(); 
    var optmonth = jQuery("#edit-disclaimer-age-month option:selected").val(); 
    var optday = jQuery("#edit-disclaimer-age-day option:selected").val(); 
    var optyear = jQuery("#edit-disclaimer-age-year option:selected").val(); 
    var age = year - optyear; 
    if (optmonth > month) {age--;} else {if(optmonth == month && optday >= date) {age--;}} 
    // if current year, form not set 
    if (optyear == year) { 
     alert(Drupal.t("You must enter the year you were born in.")); 
     return alert; 
    // if under age, alert and redirect ! 
    } else if (age < Drupal.settings.disclaimer.limit) { 
     alert(Drupal.t("Sorry, you are Under age limit and are prohibited from entering this site!")); 
     location.replace(Drupal.settings.disclaimer.exiturl); 
     return false; 
    } else { 
     // age limit ok 
     return true; 
    } 
    } 
+4

для стартового 'return alert;', вероятно, не то, что вы хотите делать –

ответ

7

Потому что вы возвращения предупреждения. Это покажет предупреждение дважды, и поскольку вы не вернетесь false, перейдите к следующей странице.

Попробуйте это:

if (optyear == year) { 
    alert(Drupal.t("You must enter the year you were born in.")); 
    return false; 
} 
+0

Я пробовал, и он все еще показывался дважды. Я добавил код выше для кнопки «Ввод», что также может быть проблемой. – user2316905

+0

@ user2316905 Вам нужно убедиться, что он также возвращает false. – mattytommo

1

возвращения предупреждения это не обязательно.

alert(Drupal.t("You must enter the year you were born in.")); 
//return alert; 

Предупреждение будет уволено с помощью alert();

+0

Я попробовал это, и он все еще показывался дважды и перенаправлялся на URL, который вы должны видеть, только если вы установили свой возраст более 18 лет. – user2316905