【问题标题】:Age restriction using Javascript使用 Javascript 的年龄限制
【发布时间】:2018-02-20 08:27:46
【问题描述】:

我是 JavaScript 新手,对这门语言一无所知。我试图在工作申请表中设置年龄限制,其中出生日期文本字段的日期格式为 dd/mm/yyyy 并且申请人在填写表格时必须在 15 到 80 岁之间他们将无法申请。我不想将它嵌入到 HTML 文件中,而是只将它写入 .js 文件中。

对于 DOB 输入类型为文本,名称为 dob,id 为 dob,模式为 (0[1-9]|1[0-9]|2[0-9]|3[01])/(0 [1-9]|1[012])/[0-9]{4}

谢谢。

【问题讨论】:

  • 这是你需要在服务器上做的事情。
  • 这似乎是一个重复的日期验证,解析和两个日期之间的差异。你应该一次过一座桥。正如 Pointy 所说,在服务器上执行此操作,因为无论如何您都不能信任客户端代码。
  • 为了用户的方便,在客户端做它很好,只要你也在服务器端做。无论如何,请注意您的正则表达式不保证有效日期,因为它接受,例如,“31/02/2000”。顺便问一下,为什么有年龄上限?年龄歧视法是否允许您居住的地方这样做?
  • @nnnnnn 这是我大学作业的一部分。我没有发言权。哈哈。我只需要在客户端服务器上做。

标签: javascript


【解决方案1】:

您可以使用 HTML5 输入日期的 min 和 max 属性

HTML:

    <input type="date" id="txtDate" />

JavaScript :

        var dtToday = new Date();
        var month = dtToday.getMonth() + 1;
        var day = dtToday.getDate();
        var year = dtToday.getFullYear();
        var maxYear = year - 18;
        if(month < 10)
            month = '0' + month.toString();
        if(day < 10)
            day = '0' + day.toString();

        var maxDate = maxYear + '-' + month + '-' + day;
        var minYear = year - 80;
        var minDate = minYear + '-' + month + '-' + day;
        alert(maxDate);
        document.querySelectorAll("#txtDate")[0].setAttribute("max",maxDate);

        document.querySelectorAll("#txtDate")[0].setAttribute("min",minDate);

【讨论】:

  • 我输入 type = "text" 而不是按作业的日期
  • 如果用户的年龄不在 18-50 岁之间,它会限制用户申请并发出警报,并且应该从用户输入的出生日期开始计算。
  • 保留 type="text" 并使用模式验证日期,如果满足,然后使用@GavinLuo 代码验证年龄,并在返回 false 时显示警报。
  • 我一打开页面,就会出现警告提示“此站点显示为 1999-09-13”。我不希望在打开该页面时出现此提示。
  • @user8595022 请从我包含的测试代码中删除 alert(maxDate)
【解决方案2】:

function processDate(date){
   var parts = date.split("/");
   return new Date(parts[2], parts[1] - 1, parts[0]);
}

function calcAge(date) {
  var dBirth = processDate(date);
  var dToday = new Date();
  var diff = dToday.getTime() - dBirth.getTime();
  return Math.floor(diff / (1000 * 60 * 60 * 24 * 365.25));
}

function validateDate(date){
  var age = calcAge(date);
  console.log(age);
  if(15<=age && age <=80) return true;
  else {
    return false;
  }
}

console.log(validateDate("01/12/1988"));

console.log(validateDate("02/11/1911"));

【讨论】:

    猜你喜欢
    • 2023-02-08
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多