Code kiểm tra Ngày/Tháng/Năm bằng java script

37 views
Skip to first unread message

HUY DANG

unread,
Oct 25, 2011, 10:40:33 AM10/25/11
to SS_1102
các bạn tạo 1 trang html rồi (ctrl +A) => xóa trắng trang.
sau đó các bạn cop đoạn code sau và chỉ việc run là ok.



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>java script </title>
<script type="text/javascript">
function checkdate() {
var kiemtra = form1.txtngaythangnam.value;
var ngay, thang, nam;
a = "/";
ngay = kiemtra.split("/")[0];
thang = kiemtra.split("/")[1];
nam = kiemtra.split("/")[2];
if (kiemtra == "")
alert("Không được để trống Ngày " + a + " Tháng " + a
+ " Năm!!!");
else {
tap = /^\d{1,2}\/\d{1,2}\/\d{4}$/
if (!(tap.test(kiemtra)))
alert("Bạn vừa nhập " + ngay + " " + a + " " +
thang + " " + a + " " + nam + " không hợp lệ. \n Vui lòng nhập
lại!!!");
else {

if (ngay < 1 || ngay > 31)
alert("Ngày: " + ngay + " không hợp lệ.\n Bạn
chỉ có thể nhập Ngày từ mùng 1-31 \nVui lòng nhập lại!!!");
else if (nam % 4 == 0 && ngay > 29)

alert("Ngày: " + ngay + " không hợp lệ.\n Bạn
chỉ có thể nhập Ngày từ mùng 1-29 \nVui lòng nhập lại!!!");

else if (thang == 2 && nam % 4 != 0 && ngay > 28)

alert("Ngày: " + ngay + " không hợp lệ.\n Bạn
chỉ có thể nhập Ngày từ mùng 1-28 \nVui lòng nhập lại!!!");

else if (thang < 1 || thang > 12)
alert("Tháng: " + thang + " không hợp lệ.\n
Bạn chỉ có thể nhập từ tháng 1- tháng 12 \nVui lòng nhập lại!!!");
else if (nam < 1900 || nam > 2100)
alert("Năm: " + nam + " không xác thực.\nyêu
cầu nhập từ 1900 - 2100 \nVui lòng nhập lại!!!");
else
alert("Bạn vừa Nhập: " + ngay + " " + a + " "
+ thang + " " + a + " " + nam + "");
}
}
}



</script>
</head>
<body>
<form name="form1" method="post" action="">
<table>
<tr>
<td>
Nhập Ngày/Tháng/Năm :
</td>
<td>
<input name="txtngaythangnam" type="text" />
(dd/mm/yyyy)
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="button" value="Nhập"
onclick="checkdate();" />
</td>
</tr>

</table>
</form>
</body>
</html>

Oanh Lê thị

unread,
Oct 25, 2011, 12:46:16 PM10/25/11
to ss_...@googlegroups.com
a Huy ơi, code này khó hiểu quá! Mà có chạy đc đâu. Mà cái đoạn tap = /^\d{1,2}\/\d{1,2}\/\d{4}$/ là thế nào đấy ah? a comment đi.



Từ: HUY DANG <hoangh...@gmail.com>
Đến: SS_1102 <ss_...@googlegroups.com>
Đã gửi 21:40 Thứ Ba, 25 tháng 10 2011
Chủ đề: Code kiểm tra Ngày/Tháng/Năm bằng java script

HUY DANG

unread,
Oct 25, 2011, 11:54:11 PM10/25/11
to SS_1102
@@

On 25 Tháng Mười, 23:46, Oanh Lê thị <thongthien0...@yahoo.com.vn>
wrote:


> a Huy ơi, code này khó hiểu quá! Mà có chạy đc đâu. Mà cái đoạn tap = /^\d{1,2}\/\d{1,2}\/\d{4}$/ là thế nào đấy ah? a comment đi.
>
> ________________________________

> Từ: HUY DANG <hoanghuy1...@gmail.com>

HUY DANG

unread,
Oct 25, 2011, 11:56:59 PM10/25/11
to SS_1102
quên mất mình comment vào mail bạn rồi đó bạn share code lên cho mọi
người tham khảo nhé.Mình giải thích qua rùi đấy có gì còn thắc mắc thì
hỏi típ nhé. Vừa ngủ dậy ấn lộn trả lời tác giả rùi. :( =>>> kiểm tra
mail nhé :))

On 25 Tháng Mười, 23:46, Oanh Lê thị <thongthien0...@yahoo.com.vn>
wrote:

> a Huy ơi, code này khó hiểu quá! Mà có chạy đc đâu. Mà cái đoạn tap = /^\d{1,2}\/\d{1,2}\/\d{4}$/ là thế nào đấy ah? a comment đi.
>
> ________________________________

> Từ: HUY DANG <hoanghuy1...@gmail.com>

Oanh Lê thị

unread,
Oct 26, 2011, 8:59:23 AM10/26/11
to SS_1102

Mọi người xem code của a Huy học hỏi đi. :d

----- Thư đã chuyển tiếp ----
Từ: HUY DANG <hoangh...@gmail.com>
Đến: Oanh Lê thị <thongth...@yahoo.com.vn>
Đã gửi 10:50 Thứ Tư, 26 tháng 10 2011
Chủ đề: Re: Về: Code kiểm tra Ngày/Tháng/Năm bằng java script

Bạn tạo ra 1 trang HTML sau đó bạn xóa hết code trong trang đó đi và
paste bài mình vào là chạy ok vì bạn thấy đây đã là bố cục của 1 trang
HTML rồi. bạn sẽ không phải thêm cái gì đâu. còn về code thì mình nói
qua như sau @@:


<html xmlns="http://www.w3.org/1999/xhtml">
> <head>
>    <title>java script </title> // là cái tiêu đề của trang.khi load trang thì chính là tên trang thay vì tên form mặc định. Cái này mình để cho đẹp thôi :)) không liên quan gì tới vấn đề đang đề cập

>    <script type="text/javascript">
>        function checkdate() {
>            var kiemtra = form1.txtngaythangnam.value; // khai bao biến kiemtra để mình sử dụng cho dễ và cảm thấy logic hơn
>            var ngay, thang, nam; // khai báo biến ngày tháng năm
>            a = "/"; // khi bạn viết 1 chuỗi chẳng hạn  alert("Bạn vừa nhập ngày 16/10/2011"); nó sẽ không hiểu "/" là gì và sẽ báo lỗi.cho nên bạn hiểu vì sao mình fai dùng biến a="/" rùi chứ.
>            ngay = kiemtra.split("/")[0]; //bỏ qua dấu  "/" như mình đã nói. còn[0] cái này là mảng.và mảng đầu tiên bao giờ cũng mặc định là [0] và chính là ngày
>            thang = kiemtra.split("/")[1]; //tương tự sau ngày là tháng vd: 15/09 thì 15 chính là ngày sau đó nó sẽ bỏ qua dấu "/" và đến tháng chính là mảng [1] vì [1] đứng sau mảng [0] mà.
>            nam = kiemtra.split("/")[2];// tương tự không cần giải thích
>            if (kiemtra == "") // đây là lí do vì sao mình dùng biến kiểm tra ở trên. nó sẽ giúp code ngắn gọn không rườm rà.

>                alert("Không được để trống Ngày " + a + " Tháng " + a
> + " Năm!!!"); // cái này cần nói không nhỉ +a+ thì "+" có nghĩa là nối chuỗi sau từ Ngày nó sẽ nối chuỗi với a bằng dấu + và a chính là dấu "/" vì như mình đã nói chuỗi nó ko hiểu dấu "/" cho nên mình cần có biến a. =>>>> đến đây thì hiểu gần hết rùi :))
>            else {
>                tap = /^\d{1,2}\/\d{1,2}\/\d{4}$/  //test tất cả các kí tự đặc biệt nếu có thì sẽ thông báo không hợp lê, và d{1,2} ngĩa là ngày chỉ gồm 2 số (ngày chỉ có từ 1-31) tương tự Tháng Năm.

>                if (!(tap.test(kiemtra)))
>                    alert("Bạn vừa nhập " + ngay + " " + a + " " +
> thang + " " + a + " " + nam + " không hợp lệ. \n Vui lòng nhập
> lại!!!");
>                else {
>
>                    if (ngay < 1 || ngay > 31) // nếu ngày mà <1  hoặc ngày >31 thì đều thông báo không hợp lệ cái \n là xuống dòng. đây là lí do vì sao "/" không hiểu trong chuỗi là vì nó luôn fai đi liền với n.

>                        alert("Ngày: " + ngay + " không hợp lệ.\n Bạn
> chỉ có thể nhập Ngày từ mùng 1-31 \nVui lòng nhập lại!!!"); // xuất ra thông báo thôi. tương tự như alert đầu tiên mình đã giải thích
>                    else if (thang == 2 && nam % 4 == 0 && ngay > 29) //sau if thì phải có else và giữa if và else thì phải có else if. cái này bạn đọc thêm cấu trúc if...else. và ở đoạn code này bạn check xem fai năm nhuận không. nam%4==0 &&ngay>29 nghĩa là nếu năm chia 4 =0 nghĩa là chia hết và ngày >29 thì thông báo sai vì năm nhuận là năm chia hết cho 4 và ngày chỉ tới 29 thôi.nếu mà nhập lớn hơn 29 sao được và cái này chỉ áp dụng cho tháng 2 thôi nên mình cho thêm tháng 2 vào dấu && nghĩa là fai thỏa mản cả 3 điều kiện thì nó mới chấp nhận không thì cứ thông báo sai thôi :))

>
>                        alert("Ngày: " + ngay + " không hợp lệ.\n Bạn
> chỉ có thể nhập Ngày từ mùng 1-29 \nVui lòng nhập lại!!!");// xuất thông báo
>
>                    else if (thang == 2 && nam % 4 != 0 && ngay > 28) // chek năm thường motip vẫn như check năm nhuận chỉ có ngày không được vượt quá 28

>
>                        alert("Ngày: " + ngay + " không hợp lệ.\n Bạn
> chỉ có thể nhập Ngày từ mùng 1-28 \nVui lòng nhập lại!!!"); // thông báo
>
>                    else if (thang < 1 || thang > 12) //tương tự dấu || nghĩa là thỏa mãn 1 trong 2 điều kiện là xuất thông báo.
Reply all
Reply to author
Forward
0 new messages