Javascript警报出现两次

时间:2013-04-24 18:41:05

标签: javascript

我正在尝试在Drupal 7中使用一个名为免责声明的模块,但警告“你必须输入你出生的那一年。”显示两次,然后继续重定向到您不应该看到的URL,直到您确认您已超过18岁。

我尝试了这些建议但它仍然出现了两次。我认为问题可能是输入按钮操作。这是功能。

 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;
    }
  }

2 个答案:

答案 0 :(得分:7)

因为您返回提醒。这将显示警报两次,因为您没有返回false,将继续显示下一页。

试试这个:

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

答案 1 :(得分:1)

返回警报不是必需的。

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

只需使用alert();

即可触发警报