Chuyển tới nội dung chính

<Cthuvien:gio>

thông tin

Controls thay thế: BSSCalendar

Mô tả​

Cthuvien:gio là một control văn bản dùng để nhập giờ dạng hh:mm (kế thừa từ System.Web.UI.WebControls.TextBox, render thẻ <input type="text">). Control tự động bổ sung chức năng bắt sự kiện bàn phím của người dùng (onkeydown="xuong(event)", onkeyup="gio_an(event)") nhằm xử lý logic chặn ký tự không hợp lệ và format auto dấu hai chấm (:) trên client. Control cũng tương thích với việc sử dụng kết hợp trong GridX.

Thuộc tính​

Thuộc tính chung​

TênKiểuMặc địnhCó thể cóMục đíchThuộc tính mớiGhi chú
idstringĐịnh danh của control
tenstringChứa đựng thông báo tên đối tượng khi có sự kiện/lỗi
kt_xoastring"K"K: không bao giờ xóa
G: dùng cho mã
L: dùng cho một số thông tin liên quan mã nhưng vẫn giữ khi làm mới form
X: làm mới form là xóa
Xóa khi làm mới form
nhapbooltruetrue / falseĐánh dấu ấn nhập có lấy thông tin hay không (C hoặc K ở client)Sẽ bị tự động đổi thành K khi đặt trong lưới (css_G...)

Khởi tạo​

Quá trình render phía server (OnPreRender)​

  1. Gán tenKieu = "gio" và ten_goc = ID.
  2. Gán kt_xoa theo giá trị khai báo.
  3. Gán onkeydown = "xuong(event);" và onkeyup = "gio_an(event);".
  4. Gán ten: nếu trống, dùng ID thay thế.
  5. Kiểm tra CssClass:
    • Nếu bắt đầu bằng css_G: gán sự kiện lưới và ép nhap = "K".
    • Ngược lại: gán nhap theo giá trị khai báo.

Attributes render ra client:

AttributeGiá trịMô tả
tenKieu"gio"Xác định loại control
ten_gocIDID gốc của control
tenten hoặc IDTên dùng cho thông báo/lỗi
kt_xoaGiá trị kt_xoaCơ chế xóa/làm mới
onkeydown"xuong(event);"Xử lý phím điều hướng
onkeyup"gio_an(event);"Format giờ tự động
nhap"C" / "K"Có lấy thông tin khi nhập hay không

Khi nằm trong lưới (css_G...), bổ sung thêm:

AttributeGiá trị
onblur"GridX_doiMauBF(event);"
onfocus"GridX_doiMauBF(event)"
onchange"GridX_hamUp(event)"

Chức năng JavaScript​

gio_an(event)​

Xử lý sự kiện onkeyup, chạy sau mỗi lần người dùng nhấn một ký tự:

  1. Chỉ xử lý khi key.length == 1 (ký tự thực, bỏ qua phím điều hướng).
  2. Lấy vị trí con trỏ hiện tại (tối đa 5).
  3. Gọi CH_CGI để chuẩn hóa giá trị (chèn dấu : đúng vị trí, lọc ký tự không hợp lệ).
  4. Nếu ký tự tại vị trí con trỏ là :, bước con trỏ qua 1.
  5. Đặt lại vị trí con trỏ.

Fs_GIO_LOI(b_gio) → string​

Kiểm tra tính hợp lệ của chuỗi giờ. Trả về chuỗi lỗi nếu sai, chuỗi rỗng nếu hợp lệ.

Các điều kiện kiểm tra:

  • Chuỗi rỗng → hợp lệ (không bắt buộc).
  • Độ dài khác 5 → "Sai kiểu giờ".
  • Ký tự thứ 3 (index 2) không phải : → "Sai kiểu giờ".
  • Giờ (hh) > 24 → "Sai kiểu giờ".
  • Phút (mm) > 59 → "Sai kiểu giờ".
  • Tổng hhmm > 2400 (vd: 24:01) → "Sai kiểu giờ".
Fs_GIO_LOI('08:30'); // ""
Fs_GIO_LOI('25:00'); // "Sai kiểu giờ"
Fs_GIO_LOI('830'); // "Sai kiểu giờ"
Fs_GIO_LOI(''); // ""

Ví dụ​

Khai báo thông thường:

<Cthuvien:gio ID="txtGioKetThuc" runat="server" nhap="true" kt_xoa="K" ten="Giờ kết thúc" />

Mã HTML sinh ra (Client):

<input name="ctl00$MainContent$txtGioKetThuc" type="text" id="ctl00_MainContent_txtGioKetThuc" tenKieu="gio" ten_goc="txtGioKetThuc" kt_xoa="K" onkeydown="xuong(event);" onkeyup="gio_an(event);" ten="Giờ kết thúc" nhap="C" />