2013-12-10 65 views
0

我已經使用Ajax Calender查找年齡,我在一個文本框中使用了日曆,並在下一個文本框中顯示了年齡。直到現在一切正常,但現在我有兩個問題手動輸入D.O.B時計算年齡

第一個問題: - 我希望年齡文本框被禁用,以便用戶不能更改年齡,但因爲我使它禁用它不會存儲任何東西在數據庫中,現在我不明白該怎麼做。

第二個問題: - 用戶可能會開始手動輸入D.O.B,而不是從日曆中選擇它,在這種情況下,沒有任何東西被計算出來,如何應用功能以仍然計算Age get的方式。

JavaScript代碼如下,現在如何讓用戶在Textbox中手動輸入D.O.B的同時工作!

<script type="text/javascript"> 
    function DateSelectionChanged(e) { 

     var today = new Date(); 
     var dob = e.get_selectedDate(); 
     var months = (today.getMonth() - dob.getMonth() + 
         (12 * (today.getFullYear() - dob.getFullYear()))); 
     document.getElementById("txtCONSULTANT_AGE").value= Math.round(months/12); 
     document.getElementById("txtCONSULTANT_AGE").readOnly = true; 
    }  
</script> 

這裏DateSelectionChanged被稱爲Ajax的日曆擴展

致謝OnClientDateSelectionChanged是進展。

+0

你可以顯示你的代碼..這將有助於瞭解更多。你在使用C#/ java嗎? –

回答

0

我已經解決了我的問題,它非常簡單。

創建另一個功能,在該功能只從文本框獲取價值,並傳遞到變量DOB,所以這將是這樣的: - 早些時候: -

dob = e.get_selectedDate(); 

現在

dob = (new Date(document.getElementById("txtDATE_OF_BIRTH").value)); 

其他一切將保持不變。所以最終的代碼將是

 function findage() { 
      var PresentDay = new Date(); 
      var dob = (new Date(document.getElementById("txtDATE_OF_BIRTH").value)); 
      var months = (PresentDay.getMonth() - dateOfBirth.getMonth() + 
       (12 * (PresentDay.getFullYear() - dateOfBirth.getFullYear()))); 
     document.getElementById("txtCONSULTANT_AGE").value=Math.round(months/12); 
     } 
0

這將使你的年齡:

var age = Math.floor(((new Date()).getTime()-(new Date($('#myAgeTextBox').val())).getTime())/(1000*60*60*24*365)); 

其中myAgeTextBox是你的文本框的id(假設用戶已經輸入適當的格式日期)

編輯:使代碼略多可讀

var currentDate = (new Date()).getTime(); 
var dobDate = (new Date($('input').val())).getTime(); 
var annualMilliSeconds = 1000*60*60*24*365; 
var age = Math.floor((currentDate-dobDate)/(annualMilliSeconds)); 
+0

發送到日期構造函數的輸入的val值是多少?似乎不太可能的字符串值將符合ISO8601日期字符串格式你不覺得嗎? – codefactor

+0

我確實說過我是在假設。 OP可能會放一些懸停文本'日期格式應該是MM/DD/YYYY'。甚至可以在提交之前進行RegEx檢查 – tewathia

+0

可能更適合使用日期小部件,ISO8601不是mm/dd/yyyy,請參閱http://www.ecma-international.org/ecma-262/5.1/#sec-15.9。 1.15將用戶輸入值傳遞給日期構造函數並不是一個好主意。最好使用正則表達式來解析用戶輸入的字符串,並以正確的格式手動構建字符串。 – codefactor

0

要使用HTML使用

01禁用你的年齡箱

或者

<input type="text" name="age" disabled /> 

的JavaScript中使用

document.getElementById('age').readOnly = true;` 

或者

document.getElementById('age').disabled = true;

注意:如果你想從提交以及刪除殘疾人,才應使用