我到處尋找,但找不到適合我的問題的好代碼。 我有一些輸入字段,用戶正在使用什麼來在線發送他們的請求。 而其中一個字段是日期字段,我想以某種方式驗證那種方式,只有當輸入的日期在今天和8天之前的某個地方纔允許。 例如:如果今天是11月29日,他們將被允許僅在11月21日至29日之間輸入日期,而沒有其他人 並且在他們輸入了錯誤日期時已經顯示一個警告窗口 他們將從minicalendar但該部分已解決,我只需要驗證幫助。 如果有人可以發佈工作代碼,我將非常感激。 謝謝使用onsubmit驗證日期輸入字段
回答
使用jQuery UI的DatePicker,下面的腳本:
$(function() {
var currentDate = new Date();
var maxAllowedDate = new Date(currentDate);
maxAllowedDate.setDate(currentDate.getDate() + 8);
$("#datepicker").datepicker({
changeYear: true,
minDate: '0',
maxDate: '+7D',
});
$('#datepicker').change(function(){
var enteredVal = new Date(this.value);
if(enteredVal.getTime() < currentDate.getTime() || enteredVal.getTime() > maxAllowedDate.getTime()) {
alert("invalid");
} else {
alert("valid");
}
});
});
和UI:
<div class="demo">
<p>Date: <input type="text" id="datepicker"></p>
這裏是的jsfiddle演示:http://jsfiddle.net/pjkz7k0t/1/
看看@CharlotteDunois評論上面 – Shiala 2014-12-01 23:54:32
@Shiala使用DatePicker設置允許的最小和最大日期範圍消除了在8天內驗證日期的需要。這實現了用戶想要使用jQuery UI(不是另一個插件庫)並防止無效日期輸入。 – 2014-12-02 00:31:16
謝謝IsabelHM ...你給了我一個好主意和代碼,但問題是,如果他們會忽略迷你日曆,他們可以把手動日期,即使不能從迷你日曆中選擇... – user2167180 2014-12-02 15:42:48
既然你問對JavaScript ,我會假設你想要一個JavaScript的答案,而不是一個jQuery的答案。
function isValidDate(checkDate) {
if(/\d\d\/\d\d\/\d\d\d\d/.test(checkDate)) {
// split checkDate into three pieces
var strMM = checkDate.split('/')[0];
var strDD = checkDate.split('/')[1];
var strYYYY = checkDate.split('/')[2];
// create new Date() object from split pieces
var strDateCheck = new Date(strYYYY,(strMM - 1),strDD);
// evaluate each piece of resulting date object against each corresponding piece of checkDate
if(((strDateCheck.getMonth() + 1) == strMM) && (strDateCheck.getDate() == strDD) && (strDateCheck.getFullYear() == strYYYY)) {
/* if you wish, add additional validation constraints here */
return true; // all three pieces match exactly
}
}
return false; // did not meet criteria for return true
}
此方法使用顯式正則表達式來驗證格式。
我沒有創建測試每件作品的詳細方法,而是使用這些作品構建一個新的Date()對象,知道結果MIGHT不匹配checkDate,並使用結果日期中的作品測試傳入的checkDate塊功能。如果所有三件匹配,則輸入的日期有效。
例如:
'02 /二千〇一十四分之二十九' 返回false
'02/29/2012' ,則返回true
'12 /二千〇一十四分之三十六' 返回false
'29/06/2014' 返回false
的代碼是純javascript從而提高便攜性,並且該方法不干擾或通過任何其他標準喲阻礙額外驗證ü選擇使用(針對今年範圍,或對今日評估strCheckDate(),或任何其他特定限制您的具體應用程序)。
另一個好處是,此方法不僅可以確定傳遞給函數的內容是否可用於創建有效日期,而且可確認輸入的日期與可創建的有效日期相匹配(從而克服了問題在創建日期時向前滾動「額外日子」的JavaScript)。
這可以很容易地擴展,以測試日期的各種配置中,使用完全相同的邏輯,簡單地通過創建不同的正則表達式的測試,和分割了checkdate不同。
正則表達式DD/MM/YYYY將是相同的,但分裂是這樣的:
// split characters into three pieces
var strDD = checkDate.split('/')[0];
var strMM = checkDate.split('/')[1];
var strYYYY = checkDate.split('/')[2];
或爲YYYY/MM/DD你可以使用正則表達式:
/\d\d\d\d\/\d\d\/\d\d/.test(checkDate)
和分割是這樣的:
// split characters into three pieces
var strYYYY = checkDate.split('/')[0];
var strMM = checkDate.split('/')[1];
var strDD = checkDate.split('/')[2];
這是高度可變形的(乾淨)的JavaScript代碼來完成瓦利的目的約會用戶輸入的日期,並可以快速修改以擴大範圍內有效日期的檢查。
function isValidDateRange(checkDate,minDate,maxDate) {
if(/\d\d\/\d\d\/\d\d\d\d/.test(checkDate)) {
// split checkDate into three pieces
var strMM = checkDate.split('/')[0];
var strDD = checkDate.split('/')[1];
var strYYYY = checkDate.split('/')[2];
// create new Date() object from split pieces
var strDateCheck = new Date(strYYYY,(strMM - 1),strDD);
// evaluate each piece of resulting date object against each corresponding piece of checkDate
if(((strDateCheck.getMonth() + 1) == strMM) && (strDateCheck.getDate() == strDD) && (strDateCheck.getFullYear() == strYYYY)) {
// if this code fires, you have a valid date entered, first logic hurdle passed
// If you pass in minDate and maxDate as any format other than a date object, you should
// create new Date(); from them before comparing.
// Example:
// var strMinMM = minDate.split('/')[0];
// var strMinDD = minDate.split('/')[1];
// var strMinYYYY = minDate.split('/')[2];
// minDate = new Date(strMinYYYY,(strMinMM - 1),strMinDD);
// var strMaxMM = maxDate.split('/')[0];
// var strMaxDD = maxDate.split('/')[1];
// var strMaxYYYY = maxDate.split('/')[2];
// maxDate = new Date(strMaxYYYY,(strMaxMM - 1),strMaxDD);
if((!strDateCheck < minDate) && (!strDateCheck > maxDate)) {
return true; // all three pieces match exactly AND date is within specified range
}
}
}
return false; // did not meet criteria for return true
}
- 1. 日期輸入字段驗證
- 2. 在JQuery中的輸入字段中輸入日期驗證
- 3. Oracle使用REGEXP驗證日期字段
- 4. Angular.Js輸入[日期]驗證
- 5. 日期輸入驗證asp.net
- 6. 驗證日期字段
- 7. MVC日期字段驗證
- 8. 驗證日期字段
- 9. EXTJS日期字段驗證
- 10. 日期選擇選項不驗證onsubmit
- 11. 使用jquery輸入字段驗證
- 12. 驗證輸入字段使用javascript
- 13. 如何驗證3個字段中的日期輸入?
- 14. 如何驗證日期輸入到3個單獨的字段?
- 15. 使用jquery進行日期驗證,防止輸入yeterdays日期。
- 16. 如何使用jQuery驗證驗證日期類型字段
- 17. 使用驗證器控件驗證asp.net中的日期字段
- 18. 驗證用戶日期輸入
- 19. 驗證日期從用戶輸入
- 20. MVC 4驗證日期ISSUE - 無法消除先前輸入的日期字段
- 21. kotlin驗證輸入字段
- 22. 驗證輸入字段
- 23. 驗證日曆中的日期字段
- 24. 分配日期輸入日期字段
- 25. AngularJS - 日期輸入和數字輸入驗證
- 26. 驗證輸入字段使用jquery驗證插件十進制
- 27. 用PHP輸入字段驗證
- 28. 驗證輸入字段。可用性
- 29. 我如何使用Struts驗證器組合使用字段驗證日期
- 30. Javascript驗證輸入的日期
你或許應該使用一會兒,大概過羅馬 – Shiala 2014-12-01 23:36:21
你可以使用一個爲() - 循環,然後如果驗證是沒有錯誤寫一個變量(例如正確的日期),如果變量不寫(或者沒有設置爲true),你可以拋出一個錯誤。 – 2014-12-01 23:36:37
[jQuery UI Datepicker](http://jqueryui.com/datepicker/#min-max) – Rafael 2014-12-01 23:36:47