2016-02-25 15 views
1

提供的代碼的目的是在當時以動態方式建立一個年齡在15到60歲之間的範圍,並且它可以工作。現在,使用HTML5的輸入標籤的好處模式屬性,我想知道是否擺脫了javascript,並且只使用模式屬性上的正則表達式來執行此操作。在JavaScript中使用正則表達式計算輸入年份的出生年份有可能嗎?

HTML代碼:

<body> 
    <div class="test"> 
    <form action="test.html" method="post"> 
     <table> 
     <tbody> 
      <tr> 
      <th colspan="3">DATE</th> 
      </tr> 
      <tr> 
      <td> 
       <input id="YEAR" name="R4" value="" placeholder="YEAR" type="text" required="required" pattern="^(19[4-9]{1}[0-9]{1}|200[1]{1})$"> 
       <input id="MONTH" name="R6" value="" placeholder="MONTH" type="text" required="required" pattern="^0[1-9]|1[0-2]$"> 
       <input id="DAY" name="R7" value="" placeholder="DAY" type="text" required="required" pattern="^0[1-9]|1\d|2\d|3[0-1]$"> 
      </td> 
      </tr> 
      <tr> 
      <td colspan="3"> 
       <button name="insert" type="button" onclick="dob()">INSERT</button> 
      </td> 
      </tr> 
     </tbody> 
     </table> 
    </form> 
    </div> 
</body> 

CSS代碼:

@CHARSET "UTF-8"; 
body { 
    margin: 0; 
    padding: 0; 
    background: #D0D0D5; 
    font-family: monospace; 
    font-size: 16px; 
} 

input { 
    width: 49px; 
    height: 15px; 
    font-size: small; 
} 

button[type="button"] { 
    width: 100%; 
    height: 25px; 
    margin-left: auto; 
    margin-right: auto; 
} 

.test { 
    position: absolute; 
    width: 200px; 
    top: 10px; 
    left: 15px; 
    border: 1px solid grey; 
    border-radius: 6px; 
    box-shadow: 3px 3px #383333 
} 

** JavaScript代碼:Calculate age in JavaScript

function dob() { 
    var year = document.getElementById('YEAR').value; 
    var month = document.getElementById('MONTH').value; 
    var day = document.getElementById('DAY').value; 
    var today = new Date(); 
    var age = today.getFullYear() - year; 
    if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) { 
    age--; 
    } 
    alert(age); 
} 
:** 從得到

JSFiddle

在此先感謝。

+3

正則表達式是不打算做數學。但即使他們可以,你的日期是通過三個單獨的字段輸入的,每個字段都有其自己的模式屬性,不知道其他字段。 (並且CSS是否真的與你的問題有關?) – nnnnnn

+2

爲什麼在這個世界上,你甚至想*做到這一點? – gravityplanx

+0

HTML5模式將對輸入字段值進行驗證,就是這樣。正如@nnnnnn所說,你可以用它們計算任何東西...... – ericbn

回答

1

恕我直言,在這種情況下,使用數字輸入類型而不是文本更有意義。不需要編寫所有複雜的正則表達式來解析文本字段中的用戶輸入。

我會改變下面的DOB字段,這使得它更容易。

<input id="YEAR" name="R4" placeholder="YEAR" type="number" required min="1949" max="2016" step="1"> 
<input id="MONTH" name="R6" placeholder="MONTH" type="number" required min="1" max="12" step="1" > 
<input id="DAY" name="R7" placeholder="DAY" type="number" required min="1" max="31" step="1"> 
+0

有了這個答案,OP擺脫了javascript。 –

+0

@TeaCode,謝謝你的回答......真的非常簡單而有用 – JGM

相關問題