ฉันมีปัญหาในการออกแบบกับ Google Chrome และฟังก์ชั่นป้อนอัตโนมัติในรูปแบบ หาก Chrome จดจำการเข้าสู่ระบบ / รหัสผ่านบางส่วนมันจะเปลี่ยนสีพื้นหลังเป็นสีเหลือง
นี่คือภาพหน้าจอบางส่วน:
วิธีลบพื้นหลังนั้นหรือเพียงแค่ปิดใช้งานการป้อนอัตโนมัตินี้
ฉันมีปัญหาในการออกแบบกับ Google Chrome และฟังก์ชั่นป้อนอัตโนมัติในรูปแบบ หาก Chrome จดจำการเข้าสู่ระบบ / รหัสผ่านบางส่วนมันจะเปลี่ยนสีพื้นหลังเป็นสีเหลือง
นี่คือภาพหน้าจอบางส่วน:
วิธีลบพื้นหลังนั้นหรือเพียงแค่ปิดใช้งานการป้อนอัตโนมัตินี้
คำตอบ:
เปลี่ยน "สีขาว" เป็นสีใดก็ได้ที่คุณต้องการ
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0 1000px white inset !important;
}
-webkit-text-fill-color
- ดูคำถามนี้
box-shadow: inset 0 0 0 1000px white !important;
หากคุณต้องการฟิลด์อินพุตแบบโปร่งใสคุณสามารถใช้การเปลี่ยนแปลงและการหน่วงเวลาการเปลี่ยนแปลง
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
-webkit-transition-delay: 9999s;
-webkit-transition: color 9999s ease-out, background-color 9999s ease-out;
}
-webkit-box-shadow
ไม่ได้ทำงานใน ลดความจำเป็นที่จะต้องให้ค่าสีสำหรับการประกาศนี้: ค่าเริ่มต้นจะยังคงมีผลอยู่
ทางออกที่นี่ :
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);
});
});
}
ใน Firefox คุณสามารถปิดใช้งานการเติมข้อความอัตโนมัติทั้งหมดในแบบฟอร์มโดยใช้แอตทริบิวต์ autocomplete = "off / on" การเติมข้อความอัตโนมัติแต่ละรายการในทำนองเดียวกันสามารถตั้งค่าได้โดยใช้แอตทริบิวต์เดียวกัน
<form autocomplete="off" method=".." action="..">
<input type="text" name="textboxname" autocomplete="off">
คุณสามารถทดสอบสิ่งนี้ได้ใน Chrome ตามที่ควรจะเป็น
autocomplete="off"
ทุกวันนี้ไม่สามารถเข้าถึงการกลึงได้
หากคุณต้องการเก็บการป้อนอัตโนมัติเช่นเดียวกับข้อมูลใด ๆ ตัวจัดการที่แนบมาและฟังก์ชันการทำงานที่แนบมากับองค์ประกอบการป้อนข้อมูลของคุณลองสคริปต์นี้:
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
var _interval = window.setInterval(function ()
{
var autofills = $('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function()
{
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}
}, 20);
}
มันสำรวจความคิดเห็นจนกว่าจะพบองค์ประกอบการป้อนอัตโนมัติใด ๆ โคลนพวกเขารวมถึงข้อมูลและเหตุการณ์จากนั้นแทรกพวกเขาลงใน DOM ในตำแหน่งเดียวกันและลบต้นฉบับ มันหยุดการสำรวจเมื่อพบว่ามีการโคลนเพราะบางครั้งการป้อนอัตโนมัติใช้เวลาหนึ่งวินาทีหลังจากโหลดหน้าเว็บ นี่คือการเปลี่ยนแปลงของตัวอย่างโค้ดก่อนหน้านี้ แต่มีประสิทธิภาพมากขึ้นและช่วยให้สามารถใช้งานได้เหมือนเดิมมากที่สุด
(ยืนยันว่าทำงานใน Chrome, Firefox และ IE 8)
CSS ต่อไปนี้จะลบสีพื้นหลังสีเหลืองและแทนที่ด้วยสีพื้นหลังที่คุณเลือก มันไม่ได้ปิดใช้งานการเติมอัตโนมัติและไม่จำเป็นต้องมี jQuery หรือ Javascript hacks
input:-webkit-autofill {
-webkit-box-shadow:0 0 0 50px white inset; /* Change the color to your own background color */
-webkit-text-fill-color: #333;
}
input:-webkit-autofill:focus {
-webkit-box-shadow: /*your box-shadow*/,0 0 0 50px white inset;
-webkit-text-fill-color: #333;
}
คัดลอกโซลูชันจาก: แทนที่การกรอกแบบฟอร์มเบราว์เซอร์และการไฮไลต์อินพุตด้วย HTML / CSS
ใช้งานได้สำหรับฉันเท่านั้นที่จำเป็นต้องเปลี่ยน css
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px #ffffff inset!important;
}
คุณสามารถใส่สีใด ๆ ในสถานที่ของ#ffffff
แฮ็คเล็กน้อย แต่ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
}
การรวมกันของคำตอบที่ได้ผลสำหรับฉัน
<style>
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
-webkit-box-shadow: 0 0 0px 1000px #373e4a inset !important;
-webkit-text-fill-color: white !important;
}
</style>
นี่คือ Jason's รุ่น MooTools แก้ไขใน Safari ด้วย
window.addEvent('domready',function() {
$('username').focus();
if ((navigator.userAgent.toLowerCase().indexOf(\"chrome\") >= 0)||(navigator.userAgent.toLowerCase().indexOf(\"safari\") >= 0))
{
var _interval = window.setInterval(function ()
{
var autofills = $$('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function(el)
{
var clone = el.clone(true,true).inject(el,'after');;
el.dispose();
});
}
}, 20);
}
});
วิธีนี้ช่วยแก้ไขปัญหาทั้งใน Safari และ Chrome
if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
window.setInterval(function(){
$('input:-webkit-autofill').each(function(){
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}, 20);
}
สิ่งนี้ช่วยฉันได้เพียง CSS เวอร์ชันเดียว
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
}
ที่สีขาวสามารถสีใด ๆ ที่คุณต้องการ
ฉันใช้สิ่งนี้
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important; }
input:focus:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important; }
/* You can use color:#color to change the color */
ในแท็กของคุณเพียงแทรกรหัสบรรทัดเล็ก ๆ นี้
autocomplete="off"
อย่างไรก็ตามอย่าวางสิ่งนี้ลงในฟิลด์ชื่อผู้ใช้ / อีเมล / idname เพราะหากคุณยังคงต้องการใช้การเติมข้อความอัตโนมัติมันจะปิดการใช้งานสำหรับฟิลด์นี้ แต่ฉันพบวิธีนี้เพียงวางรหัสในแท็กใส่รหัสผ่านของคุณเพราะคุณไม่เคยเติมรหัสผ่านอัตโนมัติอย่างไรก็ตาม การแก้ไขนี้ควรลบความเข้มของสีความสามารถในการเติมข้อความอัตโนมัติในฟิลด์อีเมล / ชื่อผู้ใช้ของคุณและช่วยให้คุณหลีกเลี่ยงการแฮ็กขนาดใหญ่เช่น Jquery หรือจาวาสคริปต์
หากคุณต้องการกำจัดมันทั้งหมดฉันได้ปรับโค้ดในคำตอบก่อนหน้านี้เพื่อให้ทำงานได้ในการโฮเวอร์, แอคทีฟและโฟกัส:
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:active, input:-webkit-autofill:focus {
-webkit-box-shadow: 0 0 0 1000px white inset;
}
!important
เป็นสิ่งที่จำเป็น แต่ขอบคุณมันช่วยฉันได้มาก
นี่คือวิธีการแก้ปัญหา Mootools ที่ทำเช่นเดียวกับของ Alessandro - แทนที่ข้อมูลที่ได้รับผลกระทบแต่ละอันด้วยอันใหม่
if (Browser.chrome) {
$$('input:-webkit-autofill').each(function(item) {
var text = item.value;
var name = item.get('name');
var newEl = new Element('input');
newEl.set('name', name);
newEl.value = text;
newEl.replaces(item);
});
}
เกี่ยวกับการแก้ปัญหานั้น:
if ($.browser.webkit) {
$(function() {
var inputs = $('input:not(.auto-complete-on)');
inputs.attr('autocomplete', 'off');
setTimeout(function() {
inputs.attr('autocomplete', 'on');
}, 100);
});
}
มันปิดการเติมข้อมูลอัตโนมัติและเติมอัตโนมัติ (เพื่อให้พื้นหลังสีเหลืองหายไป) รอ 100 มิลลิวินาทีจากนั้นเปลี่ยนการใช้งานเติมเต็มอัตโนมัติกลับมาโดยไม่ต้องป้อนอัตโนมัติ
หากคุณมีอินพุตที่ต้องป้อนข้อมูลอัตโนมัติให้กำหนดauto-complete-on
คลาส css
วิธีการแก้ปัญหาไม่ได้ผลสำหรับฉันชื่อผู้ใช้และรหัสผ่านที่ป้อนเข้ามานั้นยังคงมีอยู่และให้พื้นหลังสีเหลือง
ดังนั้นฉันจึงถามตัวเองว่า "Chrome จะกำหนดสิ่งที่ควรป้อนอัตโนมัติในหน้าเว็บที่กำหนดได้อย่างไร"
"มันมองหารหัสอินพุท, ชื่ออินพุทหรือไม่? รหัสแบบฟอร์ม?
จากการทดลองของฉันด้วยชื่อผู้ใช้และอินพุตรหัสผ่านมีเพียงสองวิธีที่ฉันพบว่าจะทำให้ Chrome ไม่สามารถหาฟิลด์ที่ควรป้อนอัตโนมัติได้:
1) ใส่รหัสผ่านหน้าของการป้อนข้อความ 2) ให้ชื่อและรหัสเดียวกันกับพวกเขา ... หรือไม่มีชื่อและรหัส
หลังจากที่โหลดหน้าเว็บด้วย javascript คุณสามารถเปลี่ยนลำดับของอินพุตบนหน้าเว็บหรือตั้งชื่อและ ID ให้กับพวกเขาแบบไดนามิก ...
และ Chrome ไม่ทราบว่ามีอะไรกระทบ ... การเติมข้อความอัตโนมัติยังคงปิดอยู่
แฮ็คบ้าฉันรู้ แต่มันใช้งานได้สำหรับฉัน
Chrome 34.0.1847.116, OSX 10.7.5
วิธีเดียวที่เหมาะกับฉันคือ: (จำเป็นต้องใช้ jQuery)
$(document).ready(function(e) {
if ($.browser.webkit) {
$('#input_id').val(' ').val('');
}
});
ฉันแก้ไขปัญหานี้สำหรับฟิลด์รหัสผ่านที่ฉันมีเช่นนี้:
ตั้งค่าประเภทอินพุตเป็นข้อความแทนที่จะเป็นรหัสผ่าน
ลบค่าข้อความอินพุตด้วย jQuery
แปลงประเภทอินพุตเป็นรหัสผ่านด้วย jQuery
<input type="text" class="remove-autofill">
$('.js-remove-autofill').val('');
$('.js-remove-autofill').attr('type', 'password');
การอัพเดตโซลูชัน Arjans เมื่อพยายามที่จะเปลี่ยนค่ามันจะไม่ช่วยให้คุณ มันใช้งานได้ดีสำหรับฉัน เมื่อคุณมุ่งเน้นไปที่การป้อนข้อมูลจากนั้นจะเป็นสีเหลือง มันใกล้พอ
$(document).ready(function (){
if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
var id = window.setInterval(function(){
$('input:-webkit-autofill').each(function(){
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}, 20);
$('input:-webkit-autofill').focus(function(){window.clearInterval(id);});
}
});
$('input:-webkit-autofill').focus(function(){window.clearInterval(id);});
ลองรหัสนี้:
$(function(){
setTimeout(function(){
$('[name=user_password]').attr('type', 'password');
}, 1000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input name="user_password" type="password">
คำตอบnamrouti ค่าโดยสารถูกต้อง แต่พื้นหลังยังคงได้รับสีเหลืองเมื่อป้อนข้อมูลที่ถูกเลือก การเพิ่ม!important
แก้ไขปัญหา หากคุณต้องการtextarea
และยังselect
มีพฤติกรรมเดียวกันเพียงแค่เพิ่มtextarea:-webkit-autofill, select:-webkit-autofill
อินพุตเท่านั้น
input:-webkit-autofill {
background-color: rgb(250, 255, 189) !important;
}
อินพุต, เลือก, textarea
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {
background-color: rgb(250, 255, 189) !important;
}
การเพิ่มautocomplete="off"
จะไม่ตัด
type="search"
เปลี่ยนประเภทการป้อนข้อมูลแอตทริบิวต์
Google ไม่ใช้การป้อนอัตโนมัติกับอินพุตด้วยการค้นหาประเภทหนึ่ง
หวังว่านี่จะช่วยคุณประหยัดเวลา
หากคุณต้องการหลีกเลี่ยงการสั่นไหวสีเหลืองจนกว่า css ของคุณจะถูกนำไปใช้ตบการเปลี่ยนแปลงในเด็กเลวที่เป็นเช่นนั้น:
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0 1000px white inset !important;
transition: background-color 10s ease-in-out 0s;
}
ทางออกสุดท้าย:
$(document).ready(function(){
var contadorInterval = 0;
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
var _interval = window.setInterval(function ()
{
var autofills = $('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function()
{
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
setTimeout(function(){
// $("#User").val('');
$("#Password").val('');
},10);
});
}
contadorInterval++;
if(contadorInterval > 50) window.clearInterval(_interval); // stop polling
}, 20);
}else{
setTimeout(function(){
// $("#User").val('');
$("#Password").val('');
},100);
}
});
<input type="text" name="foo" autocomplete="off" />
คำถามที่คล้ายกัน: ลิงก์
เพิ่งพบว่าตัวเองมีคำถามเดียวกัน สิ่งนี้ใช้ได้กับฉัน:
form :focus {
outline: none;
}