Có thể bạn đã quen thuộc với Đối tượng ngày tháng. Vì vậy, chỉ cần tóm tắt rất nhanh, bạn có thể gọi new Date()(Tài liệu MDN)
Nếu đó không phải là một ngày hợp lệ, nó sẽ trả về Invalid Date — đó không phải là String, nhưng cũng không phải là Số, vì vậy điều đó tốt, bạn có thể kiểm tra loại ____
Vấn đề là nó sẽ lấy các ngày như “2017–02–30” và chuyển thành “2017–03–01”. Javascript thông minh?
+tháng??
đó là. Nó sẽ cố gắng chuyển đổi bất cứ thứ gì xuất hiện sau nó thành một số và đôi khi sẽ chỉ nói đó là NaN
Vì vậy, đối với (+month -1), chúng tôi đảm bảo rằng month là một số và giảm đi 1 đơn vị, với điều kiện là new Date bắt đầu tính tháng từ 0
Hơn nữa, nếu đối tượng Date trả về Invalid Date, thì nó vẫn là đối tượng và điều kiện if sẽ là kết quả trung thực
Mặt khác, Invalid Date0 sẽ không. Tại thời điểm này, tôi đang chuyển đổi nó thành giá trị Invalid Date1 chỉ vì tôi thấy nó dễ hiểu hơn
phần khó khăn
Xem xét Đối tượng ngày không cho tôi biết “2017–02–30” là ngày không chính xác, chúng tôi chỉ cần kiểm tra xem ngày mà nó cho biết hiện tại có giống với ngày chúng tôi đã nói hay không
Dễ như ăn bánhngày. getDate() == ngày
Tôi quyết định viết bài này vì bạn google về nó, bạn sẽ tìm thấy một số chức năng với hơn 10 dòng và các thử nghiệm khá thủ công. Những cái đó trông không sạch sẽ trên mã
Điều rất quan trọng là xác thực dữ liệu do người dùng cung cấp thông qua biểu mẫu trước khi bạn xử lý dữ liệu đó. Trong số các loại xác thực dữ liệu khác nhau, xác thực ngày là một
Trong hướng dẫn này, chúng tôi đã thảo luận về cách bạn có thể thực hiện xác thực ngày JavaScript trong
1. định dạng dd/mm/yyyy hoặc dd-mm-yyyy
2. định dạng mm/dd/yyyy hoặc mm-dd-yyyy
Trong các ví dụ sau, một hàm JavaScript được sử dụng để kiểm tra định dạng ngày hợp lệ đối với một biểu thức chính quy. Sau đó, chúng tôi lấy từng phần của chuỗi do người dùng cung cấp (i. e. dd, mm và yyyy) và kiểm tra xem dd là ngày hợp lệ, mm là tháng hợp lệ hay yyyy là năm hợp lệ. Chúng tôi cũng đã kiểm tra yếu tố năm nhuận cho tháng Hai. Chúng tôi đã sử dụng ký tự "/" và "-" làm dấu phân cách trong định dạng ngày nhưng bạn có thể tự do thay đổi dấu phân cách đó theo cách bạn muốn
Xác thực định dạng dd/mm/yyyy hoặc dd-mm-yyyy
Mã HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JavaScript form validation - checking date</title> <link rel='stylesheet' href='form-style.css' type='text/css' /> </head><body onload='document.form1.text1.focus()'> <div class="mail"> <h2>Input a valid date [dd/mm/yyyy or dd-mm-yyyy format]</h2> <form name="form1" action="#"> <ul> <li><input type='text' name='text1'/></li> <li> </li> <li class="submit"><input type="submit" name="submit" value="Submit" title="validatedate(document.form1.text1)"/></li> <li> </li> </ul> </form> </div> <script src="ddmmyyyy-validation.js"></script> </body> </html>
Mã JavaScript
function validatedate(inputText) { var dateformat = /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/; // Match the date format through regular expression if(inputText.value.match(dateformat)) { document.form1.text1.focus(); //Test which seperator is used '/' or '-' var opera1 = inputText.value.split('/'); var opera2 = inputText.value.split('-'); lopera1 = opera1.length; lopera2 = opera2.length; // Extract the string into month, date and year if (lopera1>1) { var pdate = inputText.value.split('/'); } else if (lopera2>1) { var pdate = inputText.value.split('-'); } var dd = parseInt(pdate[0]); var mm = parseInt(pdate[1]); var yy = parseInt(pdate[2]); // Create list of days of a month [assume there is no leap year by default] var ListofDays = [31,28,31,30,31,30,31,31,30,31,30,31]; if (mm==1 || mm>2) { if (dd>ListofDays[mm-1]) { alert('Invalid date format!'); return false; } } if (mm==2) { var lyear = false; if ( (!(yy % 4) && yy % 100) || !(yy % 400)) { lyear = true; } if ((lyear==false) && (dd>=29)) { alert('Invalid date format!'); return false; } if ((lyear==true) && (dd>29)) { alert('Invalid date format!'); return false; } } } else { alert("Invalid date format!"); document.form1.text1.focus(); return false; } }Sơ đồ
Mã CSS
li {list-style-type: none; font-size: 16pt; } .mail { margin: auto; padding-top: 10px; padding-bottom: 10px; width: 400px; background : #D8F1F8; border: 1px soild silver; } .mail h2 { margin-left: 38px; } input { font-size: 20pt; } input:focus, textarea:focus{ background-color: lightyellow; } input submit { font-size: 12pt; } .rq { color: #FF0000; font-size: 10pt; }Xem ví dụ trên trình duyệt
Xác thực định dạng mm/dd/yyyy hoặc mm-dd-yyyy
Mã HTML
<!DOCTYPE html> <html lang="en"><head> <meta charset="utf-8"> <title>JavaScript form validation - checking date [mm/dd/yyyy or mm-dd-yyyy format]</title> <link rel='stylesheet' href='form-style.css' type='text/css' /> </head> <body onload='document.form1.text1.focus()'> <div class="mail"> <h2>Input a valid date [mm/dd/yyyy or mm-dd-yyyy format]</h2> <form name="form1" action="#"> <ul> <li><input type='text' name='text1'/></li> <li> </li> <li class="submit"><input type="submit" name="submit" value="Submit" title="validatedate(document.form1.text1)"/></li> <li> </li> </ul> </form> </div> <script src="mmddyyyy-validation.js"></script> </body> </html>
Mã JavaScript
function validatedate(inputText) { var dateformat = /^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/; // Match the date format through regular expression if(inputText.value.match(dateformat)) { document.form1.text1.focus(); //Test which seperator is used '/' or '-' var opera1 = inputText.value.split('/'); var opera2 = inputText.value.split('-'); lopera1 = opera1.length; lopera2 = opera2.length; // Extract the string into month, date and year if (lopera1>1) { var pdate = inputText.value.split('/'); } else if (lopera2>1) { var pdate = inputText.value.split('-'); } var mm = parseInt(pdate[0]); var dd = parseInt(pdate[1]); var yy = parseInt(pdate[2]); // Create list of days of a month [assume there is no leap year by default] var ListofDays = [31,28,31,30,31,30,31,31,30,31,30,31]; if (mm==1 || mm>2) { if (dd>ListofDays[mm-1]) { alert('Invalid date format!'); return false; } } if (mm==2) { var lyear = false; if ( (!(yy % 4) && yy % 100) || !(yy % 400)) { lyear = true; } if ((lyear==false) && (dd>=29)) { alert('Invalid date format!'); return false; } if ((lyear==true) && (dd>29)) { alert('Invalid date format!'); return false; } } } else { alert("Invalid date format!"); document.form1.text1.focus(); return false; } }Ghi chú. Mã CSS tương tự cho cả hai ví dụ
Xem ví dụ trong trình duyệt
file_download Tải xuống mã xác thực từ đây
Xác thực JavaScript khác
- Kiểm tra không trống
- Kiểm tra tất cả các chữ cái
- Kiểm tra tất cả các số
- Kiểm tra số nổi
- Kiểm tra chữ và số
- Kiểm tra độ dài chuỗi
- Xác thực email
- Xác thực ngày
- Mẫu đơn đăng ký
- Không có điện thoại. Thẩm định
- thẻ tín dụng số. Thẩm định
- Xác thực mật khẩu
- Xác thực địa chỉ IP
Trước. JavaScript. Biểu mẫu HTML - xác thực email
Kế tiếp. Xác thực biểu mẫu JavaScript bằng Biểu mẫu đăng ký mẫu
Kiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource
Theo dõi chúng tôi trên Facebook và Twitter để cập nhật thông tin mới nhất.
JavaScript. Lời khuyên trong ngày
Phá hủy với bí danh
Cú pháp gán phá hủy là một biểu thức JavaScript cho phép giải nén các giá trị từ mảng hoặc thuộc tính từ các đối tượng thành các biến riêng biệt. Thay vì gắn bó với biến đối tượng hiện có, chúng ta có thể đổi tên chúng theo sở thích của riêng mình