Làm cách nào để ngăn Chrome không tô màu các hộp nhập của trang web của tôi?


151

Trong số các công cụ hỗ trợ văn bản và hình ảnh khác khi gửi biểu mẫu, xác thực sau, tôi tô màu các ô nhập liệu của mình thành màu đỏ để biểu thị khu vực tương tác cần chú ý.

Trên Chrome (và đối với người dùng Thanh công cụ Google), tính năng tự động điền lại màu cho mẫu nhập của tôi màu vàng. Đây là vấn đề phức tạp: Tôi muốn tự động hoàn tất cho phép trên các biểu mẫu của mình, vì nó tăng tốc độ đăng nhập của người dùng. Tôi sẽ kiểm tra khả năng tắt thuộc tính tự động hoàn thành nếu / khi có lỗi được kích hoạt, nhưng nó phức tạp bit mã hóa để lập trình tắt tự động hoàn thành cho đầu vào bị ảnh hưởng duy nhất trên một trang. Điều này, nói một cách đơn giản, sẽ là một vấn đề đau đầu.

Vì vậy, để cố gắng tránh vấn đề đó, có phương pháp nào đơn giản hơn để ngăn Chrome tô màu lại các hộp đầu vào không?

[sửa] Tôi đã thử gợi ý quan trọng dưới đây và nó không có kết quả. Tôi chưa kiểm tra Thanh công cụ của Google để xem liệu thuộc tính! Quan trọng có hoạt động cho điều đó không.

Theo như tôi có thể nói, không có bất kỳ phương tiện nào khác ngoài việc sử dụng thuộc tính tự động hoàn thành (có vẻ như hoạt động).


1
đây không chỉ là một vấn đề trong Chrome. Thanh công cụ Google cho các trình duyệt khác thực hiện cùng một "màu vàng" của các trường đầu vào.
Carlton Jenke

2
Tôi đã cung cấp một câu trả lời cho bạn hoạt động dưới đây.
John Leidegren

8
Tôi không hiểu tại sao mọi người lại nói về phác thảo: không, câu hỏi là về nền yello, KHÔNG phải là phác thảo. Và thuộc tính tự động hoàn thành được đặt thành tắt sẽ KHÔNG khắc phục được sự cố, vì daveorms nói rằng anh ta muốn tự động hoàn thành hoạt động, không phải là nền màu vàng.

Câu trả lời:


74

Tôi biết trong Firefox bạn có thể sử dụng thuộc tính autocomplete = "off" để tắt chức năng tự động hoàn thành. Nếu điều này hoạt động trong Chrome (chưa được thử nghiệm), bạn có thể đặt thuộc tính này khi gặp lỗi.

Điều này có thể được sử dụng cho cả một yếu tố duy nhất

<input type="text" name="name" autocomplete="off">

... cũng như cho toàn bộ hình thức

<form autocomplete="off" ...>

"Tôi sẽ kiểm tra khả năng tắt thuộc tính tự động hoàn thành nếu / khi có lỗi được kích hoạt, nhưng đó là một đoạn mã hóa phức tạp để tắt tự động hoàn thành cho đầu vào bị ảnh hưởng trên một trang."
Dave Rutledge

Heh ... vâng, cảm ơn bạn, mặc dù tôi cho rằng tôi vẫn cần kiểm tra Chrome, phải không?
Dave Rutledge

2
cho những người sử dụng đường ray đơn giản<%= simple_form_for @user, html: { autocomplete: 'off' } do |f| %>
carbonr

rất tiếc phải nói rằng điều này không giúp tôi
M.Islam

136

Đặt thuộc tính phác thảo CSS thành không.

input[type="text"], input[type="password"], textarea, select { 
    outline: none;
}

Trong trường hợp trình duyệt có thể thêm màu nền, điều này có thể được sửa bằng một cái gì đó như

:focus { background-color: #fff; }

9
Lý lịch? Tôi không biết rằng Chrome cũng đã thêm màu nền? Nếu vậy, điều đó có thể được khắc phục bằng một cái gì đó như:focus { background-color: #fff; }
John Leidegren

Giết phác thảo bằng CSS có thể ngăn màu vàng nhưng nó sẽ không ngăn tự động thực sự. Nếu bạn muốn làm điều đó, điều quan trọng là sử dụng thuộc tính tự động hoàn thành, không chuẩn hoặc không.
Tom Boutell

2
@pestaa đúng, đây không phải là câu trả lời đúng, nhưng chắc chắn nó giải quyết được một vấn đề tương tự
David Lawson

Cẩn thận khi làm việc với máy tính bảng và các thứ, trình duyệt Android mặc định hơi khó sử dụng nếu không có phác thảo. Đủ dễ dàng để áp dụng cho các trình duyệt không dành cho thiết bị di động :)
Tim Post

Một cải tiến nhỏ: input[type=text], input[type=password], input[type=email], textarea, select { outline: none; }
Felipe Lima

56

đây chính xác là những gì bạn đang tìm kiếm!

// Just change "red" to any color
input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0px 1000px red inset;
}

Đây là một hack tuyệt vời. Cảm ơn
Jason

Tôi cũng sẽ tập trung vào điều đó nữa: Dinput:-webkit-autofill, input:focus:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #FFF inset; }
StephanieQ

xin chào @JStormThaKid, tôi đã sử dụng điều này ..., nhưng không hoạt động cho đầu vào chính xác ... vui lòng trả lời điều này ...
mithu

Cảm ơn vì đã trả lời câu hỏi mà anh ấy thực sự đã hỏi! Tôi gần như đã bắt đầu mất hy vọng.
BVernon

Câu trả lời hay nhất ở đây, tôi vẫn muốn google tự động hoàn thành, vì vậy xin cảm ơn
Spangle

14

Bằng cách sử dụng một chút jQuery, bạn có thể xóa kiểu dáng của Chrome trong khi vẫn giữ nguyên chức năng tự động hoàn thành. Tôi đã viết một bài viết ngắn về nó ở đây: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
$(window).load(function(){
    $('input:-webkit-autofill').each(function(){
        var text = $(this).val();
        var name = $(this).attr('name');
        $(this).after(this.outerHTML).remove();
        $('input[name=' + name + ']').val(text);
    });
});}

Cảm ơn các gợi ý! Tuy nhiên, sau khi đăng mẫu, nhấp vào nút quay lại, phần tô màu vàng đã trở lại. Tôi đã mở rộng đoạn trích của bạn (xem câu trả lời của tôi) để trình bày điều này.
321X

1 @Benjamin giải pháp tốt đẹp, nó các flash chút màu vàng nhưng nó sửa chữa ở cuối;)
itsme

7

Để xóa đường viền cho tất cả các trường, bạn có thể sử dụng như sau:

*:focus { outline:none; }

Để xóa đường viền cho các trường được chọn, chỉ cần áp dụng lớp này cho các trường đầu vào bạn muốn:

.nohighlight:focus { outline:none; }

Tất nhiên bạn cũng có thể thay đổi đường viền theo ý muốn của mình:

.changeborder:focus { outline:Blue Solid 4px; }

(Từ Bill Beckelman: Ghi đè Đường viền tự động của Chrome quanh các trường đang hoạt động bằng CSS )


2

Vâng, nó sẽ là một vấn đề đau đầu, mà theo tôi không đáng để trả lại. Có lẽ bạn có thể điều chỉnh chiến lược UI của mình một chút và thay vì tô màu đỏ cho hộp, bạn có thể tô màu viền đỏ hoặc đặt một cuộn băng nhỏ màu đỏ bên cạnh nó (như băng "Đang tải" của gmails) mờ dần khi hộp nằm trong tiêu điểm.


1

Đó là một miếng bánh với jQuery:

if ($.browser.webkit) {
    $("input").attr('autocomplete','off');
}

Hoặc nếu bạn muốn chọn lọc hơn một chút, hãy thêm tên lớp cho bộ chọn.



1

Sau khi áp dụng @Benjamin giải pháp của mình, tôi phát hiện ra rằng nhấn nút quay lại vẫn sẽ cho tôi màu vàng nổi bật.

Giải pháp của tôi bằng cách nào đó để ngăn chặn sự nổi bật màu vàng này trở lại là bằng cách áp dụng javascript jQuery sau đây:

<script type="text/javascript">
    $(function() {
        if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
        var intervalId = 0;
            $(window).load(function() {
                intervalId = setInterval(function () { // << somehow  this does the trick!
                    if ($('input:-webkit-autofill').length > 0) {
                        clearInterval(intervalId);
                        $('input:-webkit-autofill').each(function () {
                            var text = $(this).val();
                            var name = $(this).attr('name');
                            $(this).after(this.outerHTML).remove();
                            $('input[name=' + name + ']').val(text);
                        });
                    }
                }, 1);
            });
        }
    });
</script>

Hy vọng nó sẽ giúp được ai !!


1

Những công việc này. Tuyệt vời nhất, bạn có thể sử dụng các giá trị rgba (bản hack trong hộp bóng tối không hoạt động với rgba). Đây là một điều chỉnh nhỏ trong câu trả lời của @ Benjamin. Tôi đang sử dụng $ (tài liệu). Đã () thay vì $ (cửa sổ) .load (). Nó dường như hoạt động tốt hơn đối với tôi - bây giờ có ít FOUC hơn. Tôi không tin có những nhược điểm khi sử dụng $ (tài liệu). Đã ().

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
    $(document).ready(function() {
        $('input:-webkit-autofill').each(function(){
            var text = $(this).val();
            var name = $(this).attr('name');
            $(this).after(this.outerHTML).remove();
            $('input[name=' + name + ']').val(text);
        });
    });
};

1

đối với các phiên bản ngày nay, Điều này cũng hoạt động nếu được đặt ở một trong hai đầu vào đăng nhập. Cũng sửa phiên bản 40+ và sự cố Firefox muộn.

<input readonly="readonly" onfocus="this.removeAttribute('readonly');" />

0
input:focus { outline:none; }

Điều đó làm việc rất tốt cho tôi nhưng nhiều khả năng sẽ giữ mọi thứ thống nhất trên trang web của bạn, bạn sẽ muốn đưa điều này vào CSS cho văn bản:

textarea:focus { outline:none; }

Ngoài ra nó có vẻ rõ ràng đối với hầu hết nhưng đối với người mới bắt đầu, bạn cũng có thể đặt nó thành một màu như vậy:

input:focus { outline:#HEXCOD SOLID 2px ; }

-1

Nếu tôi nhớ chính xác, một quy tắc quan trọng! Trong biểu định kiểu cho màu nền của các đầu vào sẽ ghi đè tự động thanh công cụ Google - có lẽ điều tương tự cũng sẽ đúng với Chrome.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.