Tôi đang cố gắng tạo một trong các biểu mẫu mật khẩu mới chuẩn, nơi bạn nhập mật khẩu mới một lần và sau đó lần thứ hai để xác nhận. Tôi muốn nó để khi bạn làm mờ đi từ các trường này, nếu họ không phù hợp, cả sẽ được đánh dấu không hợp lệ, như trong các tình huống sau:HTML5/JS/jQuery: Trên đầu vào không hợp lệ, hãy đánh dấu phần tử khác (tùy ý) là không hợp lệ
- dùng nhập mật khẩu
abc
vào#newpassword1
. - Tab người dùng là
#newpassword2
. - Người dùng nhập mật khẩu
def
vào#newpassword2
. - Tab người dùng.
- Xác thực phát hiện sự không khớp và đánh dấu cả hai
#newpassword1
và#newpassword2
là không hợp lệ.
tôi biết rằng tôi có thể đánh dấu các mục tiêu của một sự kiện như không hợp lệ bằng cách sử dụng e.target.setCustomValidity(...)
, nhưng tôi không hiểu mô hình sự kiện JavaScript của rất tốt và không thể tìm ra cách để đánh dấu một khác nhau yếu tố là không hợp lệ dựa trên mức độ không hợp lệ của mục tiêu sự kiện.
Đây là đoạn trích có liên quan của mã (không làm việc) mà tôi đang cố gắng sử dụng:
if ($('#newpassword1').val() != $('#newpassword2').val()) {
errorMessage = "The new passwords you've entered don't match.";
$('#newpassword1, #newpassword2').setCustomValidity(errorMessage);
}
Điều này có vẻ như nó nên làm việc, bằng trực giác, nhưng tất nhiên nó không. Lỗi chỉ đơn giản là TypeError: $(...).setCustomValidity is not a function
.
Xin lưu ý: Tôi không yêu cầu làm thế nào để thêm một chiếc nhẫn màu đỏ hoặc bất cứ điều gì vào một lĩnh vực, tôi muốn nó phải thực sự được không hợp lệ (như trong, có nó trở lại validity.valid
tài sản false
).
Có thể thực hiện việc này không?
Cảm ơn!
Tôi tin rằng 'setCustomValidity' phải được sử dụng chống lại một đối tượng HTML mẹ đẻ, và không phải là một đối tượng jQuery, hãy thử '.get() setCustomValidity. (ErrorMessage)' – Ohgodwhy
Tôi tin rằng '$ (' # newpassword1, # newpassword2 ') [0] .setCustomValidity (errorMessage); 'cũng sẽ hoạt động – tymeJV
Nhờ cả hai bạn! – kine