cập nhật vào tháng 3 năm 2012.
Vì vậy, hai năm sau khi tôi trả lời ban đầu câu hỏi này, tôi quay lại và thấy rằng nó đã biến thành một mớ hỗn độn lớn. Tôi cảm thấy đã đến lúc tôi quay lại với nó và làm cho câu trả lời của tôi thực sự chính xác vì nó được đánh giá cao nhất + được chấp nhận.
Đối với bản ghi, câu trả lời của Titi là sai vì đó không phải là những gì người đăng ban đầu yêu cầu - chính xác là có thể đặt lại biểu mẫu bằng phương thức reset (), nhưng câu hỏi này đang cố xóa một biểu mẫu đã nhớ các giá trị sẽ vẫn ở dạng nếu bạn đặt lại theo cách này. Đây là lý do tại sao cần thiết lập lại "thủ công". Tôi cho rằng hầu hết mọi người đã kết thúc câu hỏi này từ một tìm kiếm của Google và thực sự đang tìm kiếm phương thức reset (), nhưng nó không hoạt động đối với trường hợp cụ thể mà OP đang nói đến.
Câu trả lời ban đầu của tôi là:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
Điều này có thể hoạt động trong nhiều trường hợp, bao gồm cả OP, nhưng như được chỉ ra trong các nhận xét và trong các câu trả lời khác, sẽ xóa các thành phần radio / hộp kiểm khỏi mọi thuộc tính giá trị.
Một câu trả lời đúng hơn (nhưng không hoàn hảo) là:
function resetForm($form) {
$form.find('input:text, input:password, input:file, select, textarea').val('');
$form.find('input:radio, input:checkbox')
.removeAttr('checked').removeAttr('selected');
}
// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
Sử dụng :text
, :radio
vv selectors tự được coi là xấu thực hành bởi jQuery khi họ kết thúc việc đánh giá để *:text
mà làm cho nó mất nhiều thời gian hơn cần. Tôi thích cách tiếp cận danh sách trắng và ước gì tôi đã sử dụng nó trong câu trả lời ban đầu của mình. Dù sao đi nữa, bằng cách chỉ định input
phần của bộ chọn, cộng với bộ đệm của phần tử biểu mẫu, điều này sẽ làm cho nó trở thành câu trả lời hoạt động tốt nhất ở đây.
Câu trả lời này vẫn có thể có một số sai sót nếu mặc định của mọi người đối với các phần tử được chọn không phải là một tùy chọn có giá trị trống, nhưng nó chắc chắn là chung chung như nó sẽ nhận được và điều này cần phải được xử lý trong từng trường hợp cụ thể .
not()
nếu biểu mẫu của bạn có bất kỳ đầu vào ẩn nào.