日期字段上的年龄限制代码

时间:2017-04-13 12:23:53

标签: javascript jquery bigcommerce

香格里拉有新的法律,我必须检查顾客是否是18岁。我已经在我的结帐时添加了一个日期字段选择框,他们必须填写他们的出生日期。

我想知道您是否可以使用javascript将当前日期取消18年并将其设置为如果您低于该年龄则无法选择它。

我一直在四处寻找大型商业的所有年龄限制插件,有人可以提供解决方案吗?

<input type="hidden" class="FormFieldId" value="25"><input type="hidden" class="FormFieldFormId" value="2"><input type="hidden" class="FormFieldType" value="datechooser"><input type="hidden" class="FormFieldPrivateId" value="">
<div id="FormField_25" class="FormField">
  <select name="FormFieldMonth[2][25]" class="formFieldDate field-xsmall Age-reg FormFieldMonth">
		<option value="" selected="">---</option><option value="1">Jan</option><option value="2">Feb</option><option value="3">Mar</option><option value="4">Apr</option><option value="5">May</option><option value="6">Jun</option><option value="7">Jul</option><option value="8">Aug</option><option value="9">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option>
	</select>
  <select name="FormFieldDay[2][25]" class="formFieldDate field-xsmall Age-reg FormFieldDay">
		<option value="" selected="">--</option><option value="1">1st</option><option value="2">2nd</option><option value="3">3rd</option><option value="4">4th</option><option value="5">5th</option><option value="6">6th</option><option value="7">7th</option><option value="8">8th</option><option value="9">9th</option><option value="10">10th</option><option value="11">11th</option><option value="12">12th</option><option value="13">13th</option><option value="14">14th</option><option value="15">15th</option><option value="16">16th</option><option value="17">17th</option><option value="18">18th</option><option value="19">19th</option><option value="20">20th</option><option value="21">21st</option><option value="22">22nd</option><option value="23">23rd</option><option value="24">24th</option><option value="25">25th</option><option value="26">26th</option><option value="27">27th</option><option value="28">28th</option><option value="29">29th</option><option value="30">30th</option><option value="31">31st</option>
	</select>
  <select name="FormFieldYear[2][25]" class="formFieldDate field-xsmall Age-reg FormFieldYear">
		<option value="" selected="">----</option><option value="1917">1917</option><option value="1918">1918</option><option value="1919">1919</option><option value="1920">1920</option><option value="1921">1921</option><option value="1922">1922</option><option value="1923">1923</option><option value="1924">1924</option><option value="1925">1925</option><option value="1926">1926</option><option value="1927">1927</option><option value="1928">1928</option><option value="1929">1929</option><option value="1930">1930</option><option value="1931">1931</option><option value="1932">1932</option><option value="1933">1933</option><option value="1934">1934</option><option value="1935">1935</option><option value="1936">1936</option><option value="1937">1937</option><option value="1938">1938</option><option value="1939">1939</option><option value="1940">1940</option><option value="1941">1941</option><option value="1942">1942</option><option value="1943">1943</option><option value="1944">1944</option><option value="1945">1945</option><option value="1946">1946</option><option value="1947">1947</option><option value="1948">1948</option><option value="1949">1949</option><option value="1950">1950</option><option value="1951">1951</option><option value="1952">1952</option><option value="1953">1953</option><option value="1954">1954</option><option value="1955">1955</option><option value="1956">1956</option><option value="1957">1957</option><option value="1958">1958</option><option value="1959">1959</option><option value="1960">1960</option><option value="1961">1961</option><option value="1962">1962</option><option value="1963">1963</option><option value="1964">1964</option><option value="1965">1965</option><option value="1966">1966</option><option value="1967">1967</option><option value="1968">1968</option><option value="1969">1969</option><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option><option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1981">1981</option><option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option><option value="1986">1986</option><option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option><option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option><option value="1994">1994</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2000">2000</option><option value="2001">2001</option><option value="2002">2002</option><option value="2003">2003</option><option value="2004">2004</option><option value="2005">2005</option><option value="2006">2006</option><option value="2007">2007</option><option value="2008">2008</option><option value="2009">2009</option><option value="2010">2010</option><option value="2011">2011</option><option value="2012">2012</option><option value="2013">2013</option><option value="2014">2014</option><option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option><option value="2018">2018</option><option value="2019">2019</option><option value="2020">2020</option><option value="2021">2021</option><option value="2022">2022</option><option value="2023">2023</option><option value="2024">2024</option><option value="2025">2025</option><option value="2026">2026</option><option value="2027">2027</option><option value="2028">2028</option><option value="2029">2029</option><option value="2030">2030</option><option value="2031">2031</option><option value="2032">2032</option><option value="2033">2033</option><option value="2034">2034</option><option value="2035">2035</option><option value="2036">2036</option><option value="2037">2037</option><option value="2038">2038</option><option value="2039">2039</option><option value="2040">2040</option><option value="2041">2041</option><option value="2042">2042</option><option value="2043">2043</option><option value="2044">2044</option><option value="2045">2045</option><option value="2046">2046</option><option value="2047">2047</option><option value="2048">2048</option><option value="2049">2049</option><option value="2050">2050</option><option value="2051">2051</option><option value="2052">2052</option><option value="2053">2053</option><option value="2054">2054</option><option value="2055">2055</option><option value="2056">2056</option><option value="2057">2057</option><option value="2058">2058</option><option value="2059">2059</option><option value="2060">2060</option><option value="2061">2061</option><option value="2062">2062</option><option value="2063">2063</option><option value="2064">2064</option><option value="2065">2065</option><option value="2066">2066</option><option value="2067">2067</option><option value="2068">2068</option><option value="2069">2069</option><option value="2070">2070</option><option value="2071">2071</option><option value="2072">2072</option><option value="2073">2073</option><option value="2074">2074</option><option value="2075">2075</option><option value="2076">2076</option><option value="2077">2077</option><option value="2078">2078</option><option value="2079">2079</option><option value="2080">2080</option><option value="2081">2081</option><option value="2082">2082</option><option value="2083">2083</option><option value="2084">2084</option><option value="2085">2085</option><option value="2086">2086</option><option value="2087">2087</option><option value="2088">2088</option><option value="2089">2089</option><option value="2090">2090</option><option value="2091">2091</option><option value="2092">2092</option><option value="2093">2093</option><option value="2094">2094</option><option value="2095">2095</option><option value="2096">2096</option><option value="2097">2097</option><option value="2098">2098</option><option value="2099">2099</option><option value="2100">2100</option><option value="2101">2101</option><option value="2102">2102</option><option value="2103">2103</option><option value="2104">2104</option><option value="2105">2105</option><option value="2106">2106</option><option value="2107">2107</option><option value="2108">2108</option><option value="2109">2109</option><option value="2110">2110</option><option value="2111">2111</option><option value="2112">2112</option><option value="2113">2113</option><option value="2114">2114</option><option value="2115">2115</option><option value="2116">2116</option><option value="2117">2117</option>
	</select>
</div>

3 个答案:

答案 0 :(得分:2)

基于粘贴代码的完整示例。它处理闰年和所有

var months = ["","Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
  nth = function(d) {
    if (d > 3 && d < 21) return 'th'; 
    switch (d % 10) {
      case 1:return "st";
      case 2:return "nd";
      case 3:return "rd";
     default:return "th";
    }
  }

window.onload = function() {
  var date = new Date(),
    yyyy = date.getFullYear(),
    maxDate = new Date(yyyy - 18, date.getMonth(), date.getDate(), 0, 0, 0),
    maxYear = maxDate.getFullYear(),
    maxMonth = maxDate.getMonth() + 1,
    maxDay = maxDate.getDate(),
    dY = document.querySelector(".FormFieldYear"),
    dM = document.querySelector(".FormFieldMonth"),
    dD = document.querySelector(".FormFieldDay");

  for (var i = yyyy - 100, max = maxYear; i <= max; i++) {
    dY.options[dY.options.length] = new Option(i, i);
  }
  dY.onchange = function() {
    dM.options.length = 1;
    var year = this.value;
    if (this.value == "") return;
    for (var i = 1; i <= 12; i++) {
      if (year == maxYear && i > maxMonth) break;
      dM[dM.options.length] = new Option(months[i], i);
    }
  }
  dM.onchange = function() {
    dD.options.length = 1;
    var year = dY.options[dY.selectedIndex].value,
      month = this.value,
      lastDay = new Date(year,month,0).getDate();
    if (this.value == "") return;
    
    for (var i = 1; i <= lastDay; i++) {
      if (year == maxYear && i > maxMonth) break;
      dD[dD.options.length] = new Option(i+nth(i), i);
    }
  }
}
<div id="FormField_25" class="FormField">
  <select name="FormFieldMonth[2][25]" class="formFieldDate field-xsmall Age-reg FormFieldMonth">
    <option value="">--</option>
  </select>
  <select name="FormFieldDay[2][25]" class="formFieldDate field-xsmall Age-reg FormFieldDay">
    <option value="">--</option>
  </select>
  <select name="FormFieldYear[2][25]" class="formFieldDate field-xsmall Age-reg FormFieldYear">
    <option value="">----</option>
  </select>
</div>

答案 1 :(得分:1)

由于我还不能发表评论,我只是想快速了解在美国网上销售eCigarretes和eLiquid的法律要求。

根据2016年8月通过的FDA法律,您需要查看在线购买的任何未满27岁的客户的带照片的身份证明。

FDA Law Snippet(ScreenShot):

enter image description here

FDA法律摘要(文字):

  

“......因此,最终规则规定,新认定的涵盖烟草制品的零售商不得将其出售给18岁以下的个人,并要求覆盖烟草制品的零售商通过审查个人的资料来核实购买者的出生日期。摄影鉴定....“

     

“......零售商无需核实任何超过26岁的人的年龄......”

     

“......因此,通过互联网销售有盖烟草制品必须符合本规则中的最低年龄和身份识别要求。”

你怎么知道某人是否低于或超过27岁?

法律在这里是灰色的,但为了确保最大程度的合规性,您最好的选择是要求您网站上所有客户的照片识别

我推荐的手动流程是您将所有已成功下单的订单置于暂停状态,并要求客户在销售点之后通过电子邮件发送带照片的身份证件。对于已经将照片ID存档的客户,您可以安全地履行订单。

您如何知道照片ID是否合法?

您可以要求拍摄3张照片并发送:

 1. The front of the photo ID. 
 2. The back of the photo ID. 
 3. A picture of the customer holding the ID near his/her face.

您可以访问数据库(虽然它要求您的业务经过审查和批准),您可以通过交叉检查信息来访问客户的个人信息以确认和确认他/她的身份(客户的地址,年龄等)和照片ID上的DOB对照从身份数据库服务返回的结果。

虽然这个答案与您的JavaScript问题无关,但我希望发布这些信息对某些人有用。

答案 2 :(得分:0)

快速且可能不是最好的解决方案是使用HTML输入日期类型和一些JavaScript代码。请注意,下面的代码不适用于firefox和IE 11或更低版本。

以下是工作代码:

function getMaxDate() {
    var millisecondsIn18years = 568080000000;
    var ceil = new Date(Date.now() - millisecondsIn18years);
    var date = ceil.getDate();
    var month = String(ceil.getMonth() + 1);
    month = month.length > 1 ? month : '0' + month;
    var year = ceil.getFullYear();
    return year + '-' + month + '-'  + date;
}
document.getElementById('dob').max = getMaxDate();
<!DOCTYPE html>
<html>
<body>
<form>
  Birthday:
  <input type="date" name="bday" id="dob">
  <input type="submit">
</form>

</body>
</html>