Chỉnh sửa: Ai đó đã làm rõ rằng bạn đang tìm kiếm thuộc tính "hợp lệ" "không hợp lệ" cho DOM.
Tôi sẽ thêm thuộc tính vào từng thẻ bằng cách sử dụng dom_object.setAttribute("isvalid", "true")
. Bạn cũng có thể có một chức năng xác nhận trung tâm cập nhật các thuộc tính này mỗi lần (và sử dụng dom_object.getAttribute("isvalid")
mỗi lần).
Bạn có thể chạy chức năng này mỗi khi yếu tố mất tiêu điểm hoặc bất cứ khi nào bạn muốn.
Không chính xác thanh lịch, nhưng tiếc là không có hỗ trợ "giả" với javascript và HTML5 ngay bây giờ.
Nếu tôi hiểu câu hỏi của bạn, bạn có thể xác thực bằng Javascript. Tuy nhiên, được cảnh báo rằng rất dễ dàng để vượt qua xác nhận phía khách hàng, đặc biệt là xác thực javascript. Bạn không bao giờ nên tin tưởng dữ liệu của khách hàng và luôn kiểm tra phía máy chủ. Ví dụ: tôi có thể dễ dàng tìm ID phần tử bằng cách kiểm tra mã nguồn, sau đó thực hiện document.getElementById('some_id').setAttribute('max', new_number)
để thay đổi giá trị tối đa (đây là một trong các mục nhập từ liên kết của bạn).
Có nhiều cách khác nhau để làm điều đó, vì vậy tôi sẽ cố gắng cung cấp cho bạn thành ngữ chung.
Bạn có thể lấy giá trị bằng cách thực hiện document.getElementById('form_element_id').value
(đảm bảo bạn cung cấp biểu mẫu name
được gửi tới máy chủ và id
được javascript sử dụng). Đối với văn bản, bạn có thể sử dụng .innerHTML
.
Sau đó, bạn có giá trị trong một biến, có nhiều cách khác nhau để kiểm tra. Ví dụ: bạn có thể làm if (parseInt(my_value) < 0) //error
. Bạn cũng có thể sử dụng cụm từ thông dụng, tôi sẽ không giải thích tất cả nhưng bạn có thể bắt đầu tại đây http://www.w3schools.com/jsref/jsref_obj_regexp.asp. Tôi biết w3schools không phải là nguồn tốt nhất nhưng tôi thấy nó là một nơi tốt để bắt đầu.
Bây giờ cho phần xác thực: thêm onsubmit="return validateForm()
vào thẻ biểu mẫu của bạn trong đó validateForm() là hàm thực hiện tất cả việc kiểm tra. Và hàm chỉ trả về true
nếu hợp lệ và false
nếu không. Điều này ghi đè các chức năng xác nhận mặc định (mà theo mặc định không có gì).
Vì vậy, trong ví dụ trên, //error
sẽ được thay thế bằng return false
. Bạn cũng có thể làm những việc khác; chẳng hạn như cảnh báo lỗi sau đó trả về false. Bạn cũng có thể sử dụng javascript để đánh dấu các trường không hợp lệ (không chắc chắn nếu đây là ý của bạn bằng cách "đánh dấu trường nhập là không hợp lệ/hợp lệ từ javascript")
Tất nhiên, nếu bạn không muốn kiểm tra tất cả các trường bạn chỉ phải trả về true nếu một số trường nào đó vượt qua. Một lần nữa, bạn không nên dựa vào điều này, nhưng nếu bạn chỉ ra để ngăn chặn người trung bình thì đó là một giải pháp dễ dàng.
Bạn luôn có thể tăng gấp đôi với một lớp "không hợp lệ", nhưng thật sự thú vị khi biết rằng có cách tốt hơn. – Pointy
Vâng, tất nhiên, nhưng điều đó sẽ nhàm chán;) – Svish