2012-03-20 11 views
14

Tôi có trường nhập ẩn trong biểu mẫu của mình. Tôi nhận thấy rằng nếu giá trị của trường đó được thay đổi bằng javascript, và sau đó người dùng làm mới trang, cùng một giá trị đó sẽ được đặt khi tải lại trang. Từ những gì tôi đã thấy, điều này chỉ xảy ra trong Firefox.Firefox lưu trữ các mục nhập bị ẩn

Tôi đã giải quyết hành vi không mong muốn này bằng cách thêm autocomplete="off" đó nhập ẩn, nhưng W3C không thích giải pháp này, và nếu tôi xác nhận trang Tôi nhận được lỗi:

Attribute autocomplete not allowed on element input at this point. 

Rõ ràng, thuộc tính autocomplete chỉ hoạt động trên các đầu vào cụ thể - see here.

Vậy là có bất kỳ giải pháp mà sẽ làm hài lòng cả W3CFirefox?

+0

Thẻ 'autocomplete' chỉ hợp lệ trong html5, vì vậy tôi đang thêm thẻ html5 vào câu hỏi. – jmlnik

+0

cũng xem http://stackoverflow.com/questions/2486474/preventing-firefox-from-remebering-the-input-value-on-refresh-with-meta-tag – user123444555621

+0

@ Pumbaa80, tamir đã thử sử dụng 'autocomplete =" tắt "' nhưng điều đó không xác thực trên '' theo spec. Bạn có đề xuất các thẻ bộ nhớ cache/tiêu đề sẽ ngăn Firefox tự động hoàn tất biểu mẫu không? – jmlnik

Trả lời

11

Để xác nhận (mà tôi sẽ không đưa càng nhiều nỗ lực vào như bạn đang có) Tôi nghĩ rằng bạn có thể sử dụng autocomplete="off" trên toàn bộ mẫu, sau đó bật nó trở lại một cách chọn lọc, như thế này:

<!DOCTYPE html> 
<html> 
<head> 
    <title>TEST</title> 
</head> 
<body> 
    <form autocomplete="off"> 
     <input type="hidden" name="test"> 
     <input type="text" name="otherfield" autocomplete="on"> 
    </form> 
</body> 
</html> 

tôi ban đầu nghĩ rằng đây là một lỗi Firefox nhưng sau khi thảo luận với robertc trong các ý kiến, tôi nghĩ rằng hành vi mong đợi phụ thuộc vào trường hợp sử dụng cụ thể. Thông số kỹ thuật không cho phép tự động hoàn thành trên các trường ẩn nên phản ứng đầu tiên của tôi vẫn cảm thấy đúng, nhưng việc triển khai của Firefox có thể có một số đối số tốt để hỗ trợ nó. Hãy bình luận.

+0

Firefox lưu trữ trạng thái của tất cả các trường biểu mẫu khi bạn tải lại (và tiếp tục quay lại), không tệ, đó là một tính năng. – robertc

+0

hoạt động :) cảm ơn. – tamir

+1

@robertc, các trường bộ nhớ đệm có thể được chỉnh sửa bởi người dùng là tốt, có, nhưng bộ nhớ đệm trường ẩn?!?! Làm thế nào là hữu ích hoặc một tính năng? Tôi tin rằng đội FF chỉ đơn giản là không nghĩ về trường hợp sử dụng đó và đã không thực hiện các thông số kỹ thuật một cách chính xác. – jmlnik

3

Ngoài ra, bạn có thể sử dụng <input type="text" style="display: none;" autocomplete="off" /> để thay thế. Đó là một chút của một hack, nhưng nó sẽ làm việc!

Bộ nhớ đệm trong Firefox thực sự là một tính năng khá tốt, nhưng nó gây ra một số vấn đề khi bạn tạo các biểu mẫu động hơn.