3

我正在尝试在 Drupal 7 中使用一个名为 disclaimer 的模块,但警告“您必须输入您出生的年份”。显示两次,然后继续重定向到您不应该看到的 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;
    }
  }
4

2 回答 2

8

因为您要返回 alert。这将显示两次警报,并且因为您没有返回false,所以它会继续到下一页。

尝试这个:

if (optyear == year) {
    alert(Drupal.t("You must enter the year you were born in."));
    return false;
}
于 2013-04-24T18:43:18.647 回答
1

不需要返回警报

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

只需使用 alert(); 就会触发警报;

于 2013-04-24T18:43:32.550 回答