Tôi có thể cho bạn 1 gợi ý như thế này
Code:
<form action="index.php" method="post" _NeddCheck="true">
<input type="text" id="tuoi" name="tuoi" _NeddCheck="true" _IsInteger="Tuổi phải là số nguyên hợp lệ"
_MinValue="12|Tuổi phải lớn hơn 12" _ManValue="90|Tuổi phải bé hơn 90" _SpanError="tuoiError" />
<span id="tuoiError" ></span>
</form>
Code này lấy ý tưởng từ cách mà MVC 3 thực hiện kiểm tra dữ liệu
Bạn có thể nhận thấy thẻ input ở trên dùng rất nhiều thuộc tính như _NeddCheck, _IsInteger, ..v.....v.... vốn ko hề có trong html chuẩn. Thực ra đó là các thuộc tính dùng để qui định việc cần/ ko cần kiểm tra dữ liệu, và nếu kiểm tra thì kiểm tra như thế nào, câu báo lỗi ra sao, vị trí bảo lỗi là thẻ có id nào
Chẳng hạn, bạn viết 1 thư viện javascript thực hiện như thế này :
+ Khi trang được load xong ( bắt sự kiện $(document).ready() với jquery hoặc sự kiện onload() của javascript ), tìm tất cả các thẻ form có đăng ký kiểm tra dữ liệu (
đó là những thẻ form có khai báo _NeddCheck="true" ), đăng ký hàm kiểm tra chặn sự kiện submit của các form này
+ Mỗi khi các form này đc submit, hàm kiểm tra của bạn sẽ được gọi, lúc đó bạn tiến hành như sau:
Duyệt tất cả các thẻ input bên trong form, tìm các thẻ có đăng ký kiểm tra ( có khai báo _NeddCheck="true" ). Khi đó, bạn lấy ra giá trị ( thuộc tính value ) của thẻ input và thực hiện các kiểm tra cần thiết, chẳng hạn
- _IsInteger="Tuổi phải là số nguyên hợp lệ" : Giá trị trong thẻ input này phải là số nguyên. Nếu ko hợp lệ thì chuỗi "Tuổi phải là số nguyên hợp lệ" sẽ được xuất ra tại thẻ span có id cho bởi thuộc tính _SpanError
- _MinValue="12|Tuổi phải lớn hơn 12" : Giá trị của thẻ input phải là số, >=12. Nếu sai, thông báo lỗi là "Tuổi phải lớn hơn 12"
Nếu có bất kỳ 1 thẻ input nào kiểm tra sai, chặn quá trình submit bằng cách cho hàm return false. Ngược lại, return true để cho phép quá trình submit tiếp tục
Hic, mình trình bày tệ quá, hồi học sinh đã dở nhất môn văn rồi, thành ra cũng ko biết viết thế nào cho dễ hiểu cả. Nói tóm lại là muốn viết đc 1 cái thư viện cho ra hồn, bạn phải có hiểu biết khá sâu về mô hình DOM của javascript, còn ko thì chịu, ko thể giúp gì cho bạn đc