क्रोम ऑटोफिल को निष्क्रिय करना


620

मैं कई रूपों पर क्रोम ऑटोफिल व्यवहार के साथ मुद्दों पर चल रहा हूं।

फार्म के सभी क्षेत्रों में बहुत सामान्य और सटीक नाम हैं, जैसे "ईमेल", "नाम", या "पासवर्ड", और उनके पास भी है autocomplete="off" सेट हैं।

स्वत: पूर्ण ध्वज ने स्वत: पूर्ण व्यवहार को सफलतापूर्वक अक्षम कर दिया है, जहां मानों की एक गिरावट दिखाई देती है जैसे ही आप टाइप करना शुरू करते हैं, लेकिन उन मानों को नहीं बदला है जो Chrome ऑटो फ़ील्ड को पॉप-अप करता है।

यह व्यवहार ठीक होगा सिवाय इसके कि क्रोम गलत तरीके से इनपुट भर रहा है, उदाहरण के लिए ईमेल पते के साथ फोन इनपुट भरना। ग्राहकों ने इस बारे में शिकायत की है, इसलिए यह कई मामलों में होने के लिए सत्यापित है, और कुछ के परिणाम के कुछ प्रकार के रूप में नहीं है जो मैंने अपने मशीन पर स्थानीय रूप से किया है।

एकमात्र वर्तमान समाधान जिसके बारे में मैं सोच सकता हूं कि वह कस्टम इनपुट नामों को गतिशील रूप से उत्पन्न कर सकता है और फिर बैकएंड पर मान निकाल सकता है, लेकिन यह इस मुद्दे के आसपास एक सुंदर हैकी तरीका लगता है। क्या ऐसे कोई टैग या क्विर्क हैं जो इसे ठीक करने के लिए इस्तेमाल किए जाने वाले ऑटोफिल व्यवहार को बदल सकते हैं?


6
यह कोई नकल नहीं है। यह एक ऑटोफिल को निष्क्रिय करने के लिए संभालता है, कि एक ऑटोफिल रंग को स्टाइल करता है ...
निकु सूरु

17
स्वत: पूर्ण = "झूठा" के बजाय स्वत: पूर्ण = "बंद" कास्ज़ोनी फेरेंज़ के अनुसार, इसके लिए लोगों को वोट दें।
रफकॉडर

7
इस प्रश्न के उत्तर की संख्या देखें - यह आपको कुछ बताना चाहिए: आप एक हारी हुई लड़ाई लड़ रहे हैं। यह अब क्रोम मुद्दा नहीं है, फ़ायरफ़ॉक्स और अन्य सूट का पालन कर रहे हैं। यह पसंद है या नहीं, आपको ब्राउज़र उद्योग के निर्णय को स्वीकार करने की आवश्यकता है, जो कि फ़ॉर्म-पूर्ण उपयोगकर्ता की पसंद है - आप उनसे लड़ सकते हैं, लेकिन आप हार जाएंगे। दिन के अंत में, आप जो सवाल पूछ रहे हैं, वह यह नहीं है कि मैं ऑटो-पूर्ण को कैसे हटा सकता हूं, बल्कि यह भी है कि कैसे मैं ऐसे रूपों का निर्माण करता हूं जो ऑटो-पूर्ण के साथ अच्छी तरह से काम करते हैं। सुरक्षा को लेकर आपकी चिंताएँ आपकी नहीं हैं, बल्कि उपयोगकर्ताओं की हैं।
mindplay.dk 13

21
क्षमा करें, लेकिन @ mindplay.dk की प्रतिक्रिया प्रति-उत्पादक है। मेरी स्थिति यह है कि मेरे पास ऐसे उपयोगकर्ता हैं जिन्होंने मेरी साइट में लॉग इन किया है और साइट पर एक पृष्ठ उनके लिए अन्य प्रणालियों के लिए खाता / pwd जानकारी दर्ज करने के लिए है। जब मैंने उनके लिए एक नया दर्ज करने के लिए एक डियाओग लगाया, तो मेरी साइट के लिए उनकी लॉगऑन जानकारी पूरी तरह से भर जाती है, जो पूरी तरह से गलत है और अगर / जब उपयोगकर्ता अनजाने में उस जानकारी को दर्ज करते हैं तो समस्याएँ आएंगी। दोनों के पास कुछ भी नहीं है। एक दूसरे। इस मामले में ब्राउज़र कुछ काउंटर कर रहा है जो उपयोगकर्ता चाहता है।
माइक के

8
@ mindplay.dk - मेरा वेब एप्लिकेशन कार्यस्थल के लिए एक वर्कफ़्लो प्रबंधन अनुप्रयोग है, इसलिए, नहीं, सुरक्षा के बारे में चिंताओं के बारे में मेरी चिंता है, जैसा कि शीर्ष प्रबंधन द्वारा अनिवार्य है और सभी कर्मचारियों द्वारा पालन किया जाना चाहिए, उर्फ ​​"उपयोगकर्ता"। " हालाँकि, उन्हें Chrome, IE, या किसी अन्य ब्राउज़र को स्वयं सेट करने के लिए कह रहा है, प्रमाणीकरण प्रक्रिया में अंतराल छोड़ने जा रहा है, क्योंकि वे ऑटोफ़िल का उपयोग करके जानबूझकर या नहीं, हवा कर सकते हैं। ANot सभी वेब एप्लिकेशन एक ही प्रकार के होते हैं, एक ही प्रकार के उपयोगकर्ताओं या चिंताओं के साथ।
पोलोहोलेसेट

जवाबों:


905

नए क्रोम संस्करणों के लिए आप बस autocomplete="new-password"अपना पासवर्ड फ़ील्ड में रख सकते हैं और वह यह है। मैंने इसे चेक किया है, ठीक काम करता है।

इस चर्चा में Chrome डेवलपर से वह टिप प्राप्त करें: https://bugs.chromium.org/p/chromium/issues/detail?id=370363#c7

PS ध्यान दें कि क्रोम नाम, आईडी और किसी भी पाठ सामग्री से ऑटोफ़िल व्यवहार का पता लगाने का प्रयास करेगा, जो लेबल और मनमाने पाठ नोड्स सहित फ़ील्ड के आसपास हो सकता है। यदि street-addressसंदर्भ के समान एक स्वत: पूर्ण टोकन है, तो Chrome इस तरह से ऑटोफ़िल करेगा। हेयुरिस्टिक काफी भ्रमित हो सकता है क्योंकि यह कभी-कभी केवल ट्रिगर करता है अगर फॉर्म में अतिरिक्त फ़ील्ड हैं, या नहीं तो फॉर्म में बहुत कम फ़ील्ड हैं। यह भी ध्यान दें कि autocomplete="no"काम करने के लिए दिखाई देगा, लेकिन autocomplete="off"ऐतिहासिक कारणों से नहीं। autocomplete="no"क्या आप ब्राउज़र को बता रहे हैं कि इस फ़ील्ड को ऑटो कहा जाना चाहिए जैसे कि फ़ील्ड "no"। यदि आप अद्वितीय यादृच्छिक autocompleteनाम उत्पन्न करते हैं तो आप ऑटो को पूर्ण रूप से अक्षम कर देते हैं।

यदि आपके उपयोगकर्ताओं ने खराब फॉर्म का दौरा किया है तो उनकी ऑटोफिल जानकारी भ्रष्ट हो सकती है । उन्हें मैन्युअल रूप से जाने और क्रोम में अपनी ऑटोफिल जानकारी को ठीक करने के लिए उनसे एक आवश्यक कार्रवाई हो सकती है।


115
for नया-पासवर्ड ’-ऑफ’ और 'असत्य ’की कोशिश करने के बाद मेरे लिए काम किया
केविन

26
यह अब केवल काम कर रहा है। झूठ, और बंद, अब काम नहीं करते। अब सही उत्तर होना चाहिए।
डेविड

5
इसका कारण यह है कि क्रोम टीम अनुशंसित स्वत: पूर्ण मान बनाने का प्रयास कर रही है, जैसा कि @ डेवलपर . google.com/web/fundamentals/design-and-ui/input/… दिखाया गया है । "नया-पासवर्ड" मान एक है इसके आसपास कुछ अतिरिक्त तर्क हैं, और इस मामले में,
ऑटोफिल

30
1.13.2018 संस्करण 63.0.3239.132 (आधिकारिक बिल्ड) (64-बिट) के रूप में काम नहीं कर रहा है
PellucidWombat

36
मैं बस कहना चाहता था .. इस मुद्दे पर ठोकर खाने के बाद .. क्रोम काम का एक वास्तविक टुकड़ा है। इसलिए अब हमें कार्यक्षमता को निष्क्रिय करने के लिए हुप्स के माध्यम से कूदना चाहिए जो वैकल्पिक रहना चाहिए था। जिस दुनिया में ऑटोफिल को संबोधित किया जाना चाहिए वह एक व्यावसायिक अनुप्रयोग में होगा जहां हर बार पता नया / अलग होता है। Google Microsoft की तरह ही खराब होता जा रहा है।
एडी हावर्ड

700

मैंने अभी पाया है कि अगर आपके पास किसी साइट के लिए याद किया हुआ उपयोगकर्ता नाम और पासवर्ड है, तो Chrome का वर्तमान संस्करण आपके उपयोगकर्ता नाम / ईमेल पते को किसी भी क्षेत्र से पहले स्वत: ही भेज देगा type=password। यह परवाह नहीं करता है कि क्षेत्र को क्या कहा जाता है - पासवर्ड मानने से पहले फ़ील्ड को अपना उपयोगकर्ता नाम मान लें।

पुराना हल

बस उपयोग करें <form autocomplete="off">और यह पासवर्ड को प्रीफ़िलिंग करने से रोकता है और साथ ही किसी भी तरह के क्षेत्र को भरने के आधार पर जो एक ब्राउज़र बना सकता है (जो कि अक्सर गलत होता है) के आधार पर होता है। के रूप में उपयोग करने का विरोध किया गया है <input autocomplete="off">जो पासवर्ड ऑटोफिल (क्रोम में जो है, फ़ायरफ़ॉक्स इसे मानता है) द्वारा बहुत अधिक अनदेखा किया गया लगता है।

अद्यतन समाधान

क्रोम अब नजरअंदाज करता है <form autocomplete="off"> । इसलिए मेरा मूल वर्कअराउंड (जिसे मैंने डिलीट कर दिया था) अब सभी गुस्से में है।

बस कुछ फ़ील्ड बनाएं और उन्हें "प्रदर्शन: कोई नहीं" के साथ छिपाएं। उदाहरण:

<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>

फिर अपने असली खेतों को नीचे रखें।

अपनी टीम पर टिप्पणी या अन्य लोगों को जोड़ने के लिए याद रखें कि आप क्या कर रहे हैं!

मार्च 2016 को अपडेट करें

बस नवीनतम क्रोम के साथ परीक्षण किया गया - सभी अच्छे। यह अब एक काफी पुराना उत्तर है लेकिन मैं केवल इस बात का उल्लेख करना चाहता हूं कि हमारी टीम कई वर्षों से दर्जनों परियोजनाओं पर इसका उपयोग कर रही है। यह अभी भी नीचे कुछ टिप्पणियों के बावजूद बहुत अच्छा काम करता है। एक्सेसिबिलिटी को लेकर कोई समस्या नहीं है क्योंकि फील्ड्स का display:noneमतलब है कि उन्हें फोकस नहीं मिलता। जैसा कि मैंने उल्लेख किया है कि आपको उन्हें अपने वास्तविक क्षेत्रों से पहले रखने की आवश्यकता है ।

यदि आप अपने फॉर्म को संशोधित करने के लिए जावास्क्रिप्ट का उपयोग कर रहे हैं, तो एक अतिरिक्त चाल है जिसकी आपको आवश्यकता होगी। फॉर्म में हेरफेर करते हुए नकली फ़ील्ड दिखाएं और बाद में उन्हें फिर से एक मिलीसेकंड छिपा दें।

JQuery का उपयोग करके उदाहरण कोड (मान लें कि आप अपने नकली फ़ील्ड को एक वर्ग देते हैं):

        $(".fake-autofill-fields").show();
        // some DOM manipulation/ajax here
        window.setTimeout(function () {
            $(".fake-autofill-fields").hide();
        },1);

जुलाई 2018 अपडेट करें

मेरा समाधान अब इतनी अच्छी तरह से काम नहीं कर रहा है क्योंकि क्रोम के विरोधी प्रयोज्यता विशेषज्ञों ने काम पर कड़ी मेहनत की है। लेकिन उन्होंने हमें एक हड्डी के रूप में फेंक दिया है:

<input type="password" name="whatever" autocomplete="new-password" />

यह काम करता है और ज्यादातर समस्या को हल करता है।

हालाँकि, यह तब काम नहीं करता है जब आपके पास पासवर्ड फ़ील्ड न हो लेकिन केवल एक ईमेल पता हो। यह भी मुश्किल हो सकता है कि यह पीले और प्रीफिलिंग को रोकने के लिए हो सकता है। इसे ठीक करने के लिए नकली खेतों के घोल का इस्तेमाल किया जा सकता है।

वास्तव में आपको कभी-कभी दो बहुत सारे नकली क्षेत्रों में छोड़ने की आवश्यकता होती है, और उन्हें विभिन्न स्थानों में आज़माएं। उदाहरण के लिए, मेरे पास मेरे फ़ॉर्म की शुरुआत में पहले से ही नकली फ़ील्ड थे, लेकिन क्रोम ने हाल ही में अपने 'ईमेल' फ़ील्ड को फिर से प्रीफ़िल करना शुरू कर दिया - तो फिर मैं 'ईमेल' फ़ील्ड से ठीक पहले दोगुना और अधिक नकली फ़ील्ड में डाल दिया, और उसने इसे ठीक कर दिया । फ़ील्ड के पहले या दूसरे भाग को हटाने से गलत ओवरफॉइल ऑटोफ़िल का संकेत मिलता है।

अद्यतन मार्च 2020

यह स्पष्ट नहीं है कि क्या और कब यह समाधान अभी भी काम करता है। यह अभी भी कभी-कभी काम करता दिखाई देता है लेकिन हर समय नहीं।

नीचे दी गई टिप्पणियों में आपको कुछ संकेत मिलेंगे। सिर्फ @anilyeni द्वारा जोड़ा गया कुछ और जांच के लायक हो सकता है:

जैसा कि मैंने देखा, autocomplete="off"क्रोम 80 पर काम करता है, अगर 3 तत्वों से कम है <form>। मुझे नहीं पता कि इसके बारे में क्या तर्क है या संबंधित दस्तावेज क्या है।

इसके अलावा @ डब्रोक्स से यह प्रासंगिक हो सकता है, हालांकि मैंने इसका परीक्षण नहीं किया है:

ट्रिक के लिए बहुत बहुत धन्यवाद, लेकिन कृपया जवाब अपडेट करें, जैसा display:none;कि अब और काम नहीं position: fixed;top:-100px;left:-100px; width:5px;करता है , लेकिन :)

अद्यतन APRIL 2020

इस विशेषता के लिए क्रोम का विशेष मूल्य काम कर रहा है: (इनपुट पर परीक्षण किया गया - लेकिन मेरे द्वारा नहीं) autocomplete="chrome-off"


7
मुझे इतना यकीन था कि यह काम करेगा क्योंकि आपने पासवर्ड क्षेत्र से पहले इनपुट के साथ अनुभव कर रहे पूरी तरह से आत्मकेंद्रित ऑटोफिल को समझाया। दुर्भाग्य से, यह मेरे लिए काम नहीं कर रहा था, मैंने दोनों फॉर्म और सभी इनपुट पर स्वत: पूर्ण = "बंद" डाल दिया और वे अभी भी भरे हुए हैं। एकमात्र उपाय जो मेरे लिए काम करता था, ऊपर गोडेय की कड़ी में है। (दूसरे छिपे हुए प्रकार = "पासवर्ड" इनपुट को पासवर्ड को क्रोम के हेयुरिस्टिक चेक से बाहर फेंकने से पहले)
संसद

19
यह ठीक काम करता था, मैंने भी इसका इस्तेमाल किया, लेकिन चूंकि कुछ समय पहले (5 मई और उसके बीच) क्रोम अपग्रेड किया गया था, इसलिए क्रोम फॉर्म की संपत्ति की अनदेखी करता है :(
टोमिनेटर

13
Google ने निर्णय लिया कि (Chrome v34 मुझे लगता है) कि यह नीति अब ALWAYS को बनाने के लिए स्वत: पूर्ण = "बंद" को अनदेखा करती है, जिसमें फार्म स्तर के निर्देश भी शामिल हैं ... यह ठीक होगा यदि यह वास्तव में लानत खेतों को मिला।
जैमर

10
स्वत: पूर्ण = "असत्य" नहीं स्वत: पूर्ण = "बंद" की कोशिश करें
roughcoder

241
यह विशेषता भी आवश्यक है:autocomplete="I told you I wanted this off, Google. But you would not listen."
rybo111

265

महीनों और महीनों के संघर्ष के बाद, मैंने पाया है कि समाधान बहुत आसान है जितना आप कल्पना कर सकते हैं:

autocomplete="off"उपयोग के बजायautocomplete="false" ;)

जैसा कि सरल है, और यह Google क्रोम में भी एक आकर्षण की तरह काम करता है!


अगस्त 2019 अपडेट (टिप्पणियों में @JonEdiger का क्रेडिट)

नोट: बहुत सारी जानकारी ऑनलाइन कहती है कि ब्राउज़र अब स्वतः पूर्ण = 'असत्य' को स्वतः पूर्ण = 'बंद' के समान मानते हैं। कम से कम इस मिनट के रूप में, यह उन तीन ब्राउज़रों के लिए स्वत: पूर्णता को रोक रहा है।

इसे फॉर्म लेवल पर सेट करें और फिर इनपुट के लिए जिसे आप इसे बंद करना चाहते हैं, 'नॉन' जैसे कुछ गैर-वैध मूल्य पर सेट करें:

<form autocomplete="off"> 
  <input type="text" id="lastName" autocomplete="none"/> 
  <input type="text" id="firstName" autocomplete="none"/>
</form>

8
मेरे लिए काम किया! लेकिन एक महत्वपूर्ण टिप्पणी है: मेरे वेब पेज में 5 फ़ील्ड हैं: नाम, पता, ज़िप कोड, फ़ोन और ईमेल। जब मैंने फ़ॉर्म और नाम फ़ील्ड पर स्वत: पूर्ण = 'गलत' शामिल किया, तब भी यह काम किया। हालाँकि, जब मैंने पता फ़ील्ड पर स्वत: पूर्ण = 'असत्य' को शामिल किया, तो इसने उन्हें स्वतः रोकना बंद कर दिया! तो, आपको लॉगिन या नाम फ़ील्ड पर नहीं, बल्कि निम्नलिखित फ़ील्ड पर भी स्वत: पूर्ण संपत्ति डालने की आवश्यकता है! (2015-05-27 तक क्रोम 43.0.2357.81 पर काम किया गया)
डीवीडी फ्रेंको

45
अगर यह आपके लिए काम नहीं करता है: ध्यान रखें कि क्रोम "उपयोगकर्ताओं" की मदद करने के 2 तरीके हैं। AUTOCOMPLETE दर्ज किए गए फॉर्म में पिछले सबमिशन के आधार पर संकेत देगा और उन लोगों को प्रभावित करेगा जो फॉर्म का एक से अधिक बार उपयोग कर रहे हैं। स्वत: पूर्ण स्वत: पूर्ण = "बंद" के साथ अक्षम है। स्वचालित रूप से अन्य पृष्ठों पर इसी तरह के भरे हुए फॉर्म से पता पुस्तिका के आधार पर संकेत देगा। यह उन क्षेत्रों को भी उजागर करेगा जो इसे बदल रहे हैं। ऑटोफिल को स्वत: पूर्ण = "गलत" के साथ अक्षम किया जा सकता है।
जेनकिल्स

4
यह मेरे लिए काम नहीं करता है (संस्करण 43.0.2357.124 मीटर)। यह संभवतः Google द्वारा एक निरीक्षण था, जिसे अब हल कर दिया गया है। उन्हें लगता है कि "उपयोगकर्ता हमेशा सही होता है" यह सोचकर कि वे सब कुछ ऑटोफिल करना चाहते हैं। समस्या है, मेरी पंजीकरण फार्म सिर्फ लॉगिन रूप की तरह उपयोगकर्ता डेटा की बचत होती है जो सबसे निश्चित रूप से है करता है, नहीं उपयोगकर्ता क्या चाहता है ...
rybo111

3
YEP यह क्रोम में काम करता है 43.0.2357 !! Chrome में यह व्यवहार बहुत कष्टप्रद है, और यह पता लगाने में मुझे कुछ समय लगा। आपके उत्तर के लिए धन्यवाद।
एड्रियानो रोजा

3
Chrome 44.0.2403.157 के साथ काम नहीं करता है। यह सुविधा कैसे काम कर सकती है और विभिन्न संस्करणों के साथ काम नहीं कर सकती है। यह हास्यास्पद है
मत्तीज

120

कभी-कभी भी autocomplete=offक्रेडेंशियल को गलत क्षेत्रों में भरने से नहीं रोका जाएगा।

एक वर्कअराउंड ब्राउज़र ऑटोफिल को रीडऑनली-मोड का उपयोग करके अक्षम करना और फोकस पर लिखने योग्य बनाना है:

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

focusघटना माउस क्लिक पर होता है और खेतों के माध्यम से टैब।

अपडेट करें:

मोबाइल सफारी क्षेत्र में कर्सर सेट करता है, लेकिन वर्चुअल कीबोर्ड नहीं दिखाता है। यह नया समाधान पहले की तरह काम करता है, लेकिन वर्चुअल कीबोर्ड को संभालता है:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

लाइव डेमो https://jsfiddle.net/danielsuess/n0scguv6/

// अपडेट

स्पष्टीकरण: ब्राउज़र ऑटो गलत पाठ फ़ील्ड में क्रेडेंशियल्स भरता है?

गलत तरीके से इनपुट भरना, उदाहरण के लिए ईमेल पते से फोन इनपुट भरना

कभी-कभी मैं क्रोम और सफारी पर इस अजीब व्यवहार को नोटिस करता हूं, जब एक ही रूप में पासवर्ड फ़ील्ड होते हैं मुझे लगता है, ब्राउज़र आपके सहेजे गए क्रेडेंशियल्स सम्मिलित करने के लिए एक पासवर्ड फ़ील्ड की तलाश करता है। तो फिर यह autofills उपयोगकर्ता नाम निकटतम textlike-इनपुट क्षेत्र, कि पहले पासवर्ड फ़ील्ड दिखाई देती है में डोम में (सिर्फ अवलोकन की वजह से अनुमान लगा)। चूंकि ब्राउज़र अंतिम उदाहरण है और आप इसे नियंत्रित नहीं कर सकते,

ऊपर पढ़ा गया यह मेरे लिए काम करता है।


12
क्या बढ़िया तय है :) आपको इसके साथ jquery को बदलना चाहिए: this.removeAttribute ("class")
Roey

मैंने इसका इस्तेमाल एक ड्रॉपडॉनलिस्ट को ऑटोफिल करने से रोकने के लिए किया था। लेकिन यह भी आसानी से restyled तो यह यह नहीं देखा। शांत विचार!
आराम से

1
@Clint: मेरे कोड का टुकड़ा हटा देगा ऊपर केवल पढ़ने के लिए विशेषता के रूप में जल्द ही उपयोगकर्ता के रूप में क्षेत्र (माउस क्लिक या टैब कुंजी के अनुसार) में प्रवेश करती है। मुझे लगता है, आप एक फ़ील्ड को संदर्भित करते हैं, जो ऑटो फ़िल प्रोटेक्टेड है , लेकिन उपयोगकर्ता द्वारा छुआ नहीं गया है। यह क्षेत्र उद्देश्य क्या है - और क्या वास्तव में इसे संरक्षित करने की आवश्यकता है? परिदृश्य के आधार पर, सबमिट पर सभी पठनीय विशेषताओं को हटाना एक विकल्प हो सकता है। क्या आप अपने मुद्दे पर अधिक विशिष्ट टिप्पणी जोड़ सकते हैं? शायद मैं आप मदद कर सकते हैं :)
dsuess

1
यदि आप जावास्क्रिप्ट का उपयोग कर रहे हैं। क्यों न केवल मान को dummyफिर से सेट करें और फिर से मान निकालें? जोड़ने और हटाने के लिए एक खतरनाक कदम की तरह लगता है - क्या होगा अगर ब्राउज़र नहीं चाहता कि आप उस पर ध्यान केंद्रित करें?
रयबो ११३

1
जाहिर तौर पर Google हम सभी के लिए निर्णय लेने की कोशिश कर रहा है, उन्होंने स्वतः पूर्ण = "बंद": Bugs.chromium.org/p/chromium/issues/detail?id=468153 के बारे में टिकट बंद कर दिया । लेकिन वहाँ एक और टिकट स्वत: भरण अक्षम करने के लिए मान्य उपयोगकर्ता मामलों इकट्ठा करने के लिए खोला गया है, इस टिकट जवाब दें यहां इस मुद्दे के और अधिक जागरूकता बढ़ाने के लिए: bugs.chromium.org/p/chromium/issues/detail?id=587466
नॉर्मन जू

81

यदि आप एक खोज बॉक्स सुविधा लागू कर रहे हैं, तो निम्नानुसार typeविशेषता सेट करने का प्रयास करें search:

<input type="search" autocomplete="off" />

यह मेरे लिए Chrome v48 पर काम कर रहा है और वैध मार्कअप प्रतीत होता है:

https://www.w3.org/wiki/HTML/Elements/input/search


हाँ! :) धन्यवाद! यह क्रोम 67.0.3396.99 में काम करता है। (मुझे लगता है कि आपका लिंक होना चाहिए: w3.org/wiki/HTML/Elements/input/search सितंबर 2018 तक)।
एंडी किंग

4
आखिरकार! अभी भी संस्करण 69.0.3497.100 (आधिकारिक बिल्ड) काम करता है (64-बिट) यह वास्तविक उत्तर होना चाहिए!
वेंसन

1
हर कोई सही और गलत है और उसी समय आपको टैग के अंदर स्वत: पूर्ण = "बंद" लिखना चाहिए इनपुट के बजाय <फ़ॉर्म स्वत: पूर्ण = "बंद"> और यह
ऑटोफ़िल

2
यह भी काम करता है यदि आप फ़ॉर्म पर स्वत: पूर्ण = "बंद" सेट करते हैं (उस डिफ़ॉल्ट प्रपत्र-विस्तृत को बदलने के लिए) और फिर <इनपुट> पर टाइप = "खोज" सेट करने की आवश्यकता है
जॉन

9
Chrome संस्करण 72.XX के बाद, यह फिक्स काम नहीं करता है। सबसे
अंतिम निर्धारण

65

इसे इस्तेमाल करे। मुझे पता है कि सवाल कुछ पुराना है, लेकिन यह समस्या के लिए एक अलग दृष्टिकोण है।

मैंने यह भी देखा कि मुद्दा इसके ठीक ऊपर आता है password क्षेत्र के ।

मैंने दोनों तरीकों को आजमाया

<form autocomplete="off"> तथा <input autocomplete="off"> लेकिन उनमें से किसी ने भी मेरे लिए काम नहीं किया।

इसलिए मैंने इसे नीचे दिए गए स्निपेट का उपयोग करके तय किया - बस पासवर्ड टाइप फ़ील्ड के ऊपर एक और टेक्स्ट फ़ील्ड जोड़ा और इसे बनाया display:none

कुछ इस तरह:

<input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;" />
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
<input type="password" name="password" id="password" value="" />

आशा है कि यह किसी की मदद करेगा।


1
इसने मेरे लिए (अभी के लिए) काम किया। मैंने पाया है कि मैंने समय के साथ लगभग आधा दर्जन अलग-अलग हैक का उपयोग किया है, और थोड़ी देर के बाद क्रोम यह निर्णय लेता है कि वह उस हैक को हराना चाहता है। तो एक नए की जरूरत है, जैसे कि यह एक। मेरे आवेदन में, मेरे पास ईमेल और पासवर्ड फ़ील्ड के साथ एक प्रोफ़ाइल अपडेट फॉर्म है जिसे खाली छोड़ दिया जाना है जब तक कि उपयोगकर्ता परिवर्तन नहीं करना चाहता। लेकिन जब क्रोम ऑटोफिल करता है, तो यह उपयोगकर्ता को "ईमेल पुष्टिकरण" फ़ील्ड में डालता है, जिसके परिणामस्वरूप सभी प्रकार की त्रुटि स्थितियां पैदा होती हैं, जिससे आगे त्रुटि की स्थिति पैदा होती है, क्योंकि उपयोगकर्ता सही काम करने की कोशिश के बारे में भड़कता है।
जेफरी साइमन

2
यह हैक क्यों काम करता है (अभी के लिए) के रूप में एक त्वरित स्पष्टीकरण: क्रोम पहले प्रकार = पासवर्ड इनपुट को देखता है और इसे ऑटोफिल करता है और यह मानता है कि इस MUST से पहले क्षेत्र सीधे उपयोगकर्ता नाम फ़ील्ड होना चाहिए, और उपयोगकर्ता नाम के साथ उस क्षेत्र को ऑटोफिल करता है। @ जेफ्रीसिमोन को ईमेल पुष्टि क्षेत्र में उपयोगकर्ता की घटना की व्याख्या करनी चाहिए (मैं अपने फॉर्म में यही बात देख रहा था)।
MrBoJangles

1
@kentcdodds - सुनिश्चित नहीं है कि अब आपके काम करने का क्या मतलब है। आपके jsbin में पासवर्ड फ़ील्ड नहीं है इसलिए एक अलग स्थिति है। मैं वर्षों से इस समाधान का उपयोग कर रहा हूं और हाल ही में मैंने देखा कि इसकी आवश्यकता थी और इसने मेरे लिए पिछले सप्ताह (मार्च 2015) काम किया।
माइक नेल्सन

1
हुर्रे! एक समाधान जो काम करने लगता है! मैं इस क्षेत्र को नाम passwordदेने और actual_passwordवैध क्षेत्र के लिए सलाह दूंगा , जैसा कि Google अब देख रहा है name। हालांकि, इसका मतलब है कि क्रोम तब पासवर्ड को सेव नहीं करेगा, जो कि कार्यक्षमता है जो मैं वास्तव में चाहता हूं । AAAAARRRRGHH!
रयबो ११३

2
अद्यतन: यह एक साल से अधिक काम करना जारी रखता है क्योंकि पिछली बार मैंने इसे लागू किया था। हमारे यहां ठोस विजेता हो सकता है।
MrBoJangles

48

मुझे पता नहीं क्यों, लेकिन इसने मेरे लिए मदद की और काम किया।

<input type="password" name="pwd" autocomplete="new-password">

मुझे पता नहीं क्यों, लेकिन autocompelete = "नया-पासवर्ड" ऑटोफिल को निष्क्रिय करता है। यह नवीनतम 49.0.2623.112 क्रोम संस्करण में काम किया ।


मेरे क्रोम को अपडेट किया, और अभी भी यह मेरे लिए काम करता है। 50.0.2661.87 (64 बिट)
Tauras

दुर्भाग्यवश, फ़ॉर्म सबमिट करते समय (या जब इनपुट फ़ील्ड छिपाए / हटाए जाते हैं), तो Chrome परिवर्तित लॉग को सहेजने के लिए कहता है।
सिब्बल

संस्करण 51.0.2704.79 मीटर में काम करता है
जेफ्री हेल

पवित्र च *** यह क्यों काम करता है? यह एक बग है? क्योंकि मैंने इसे यहाँ परीक्षण किया और इसे केवल एक इनपुट में रखा और इनपुट लॉगिन और पासवर्ड दोनों के लिए काम किया, लेकिन मैंने इसे केवल पासवर्ड में रखा
Leandro RR

मुझे पता नहीं है। मुझे लगता है कि एक क्रोम "बात" है जो डेवलपर्स द्वारा बनाई गई थी। शायद मुझसे गलती हुई है।
वृषभस

46

मेरे लिए, सरल

<form autocomplete="off" role="presentation">

ने करदी।

कई संस्करणों पर परीक्षण किया गया, अंतिम प्रयास 56.0.2924.87 पर था


@ArnoldRoa संस्करण जोड़ा गया है, यह उस दिन से हमारी साइट पर है जब मैंने इसे पोस्ट किया है और इसके कुछ संस्करण हैं जहां इसने ठीक काम किया है। आपके द्वारा कौन सा संस्करण उपयोग किया जा रहा है? पीसी / मैक?
कुफ

57.0.2987.110 पर काम नहीं कर रहा है। Chrome इसे पीला दिखाता है और मेरे सहेजे गए पासवर्ड से फ़ील्ड को प्रीफ़िल करता है। लेकिन पेज एक उपयोगकर्ता प्रबंधन पेज है, लॉगिन पेज नहीं।

1
@ डमी मैंने इसे अभी नवीनतम (57) क्रोम पर परीक्षण किया है और यह अभी भी मेरे लिए काम कर रहा है। क्या आपने इनपुट क्षेत्रों के साथ कुछ खास किया? टोपी तुम अपने कोड कहीं डाल मैं पुन: पेश करने की कोशिश कर सकते हैं?
कुफ

3
संस्करण 64.0.3282.186 (आधिकारिक बिल्ड) (64-बिट) विंडोज। ऑटोफिल को निष्क्रिय करने के लिए 2018-03-01 काम नहीं कर रहा है।
बिली जीन

2
बहुत यकीन है कि यह सहायक तकनीकों से फॉर्म / इनपुट को हटाता है w3c.github.io/use-aria/#ariapresentation
Ponomarenko

25

आपको इस विशेषता को जोड़ना होगा:

autocomplete="new-password"

स्रोत लिंक: पूर्ण अनुच्छेद


क्या आपके पास कोई स्रोत है कि यह कैसे पता करें?
एलेक्सियोवे

काम करता है, लेकिन सिमेंटिक नहीं है जैसा कि उपयोगकर्ता नाम और अन्य क्षेत्रों में उपयोग किया जा सकता है।
रॉबिन एंड्रयूज

1
दस्तावेज़ पृष्ठ: developer.mozilla.org/en-US/docs/Web/Security/…
जस्टिनस

19

यह इतना आसान और मुश्किल है :)

Google क्रोम मूल रूप से प्रत्येक पहले दिखाई देने वाले पासवर्ड तत्व के लिए खोज करता है <form>, <body>और <iframe>उनके लिए ऑटो रीफिल सक्षम करने के लिए टैग करता है, इसलिए इसे अक्षम करने के लिए आपको निम्न के रूप में डमी पासवर्ड तत्व जोड़ना होगा:

    • यदि किसी <form>टैग के अंदर आपका पासवर्ड तत्व है तो आपको <form>खुले टैग के तुरंत बाद डमी तत्व को अपने फॉर्म में पहले तत्व के रूप में रखना होगा

    • यदि आपका पासवर्ड तत्व <form>टैग के अंदर नहीं है, तो <body>खुले टैग के तुरंत बाद अपने html पृष्ठ में पहले तत्व के रूप में डमी तत्व डालें

  1. आपको सीएसएस का उपयोग किए बिना डमी तत्व को छिपाने की आवश्यकता है display:noneइसलिए मूल रूप से डमी पासवर्ड तत्व के रूप में निम्नलिखित का उपयोग करें।

    <input type="password" style="width: 0;height: 0; visibility: hidden;position:absolute;left:0;top:0;"/>

1
महान काम, आपने क्रोम के एल्गोरिथ्म का पता कैसे लगाया? मुझे अभी पता चला है कि पृष्ठ के सेट होने के बाद लोड होने के बाद जेएस के साथ मूल्य बदलने की मेरी पुरानी पद्धति अब और काम नहीं करती है। लेकिन यह सही काम करता है!

दुर्भाग्य से, नियमित टेक्स्टबॉक्स इनपुट के लिए काम नहीं करता है।
आंख

1
वास्तव में यह सिर्फ नाम की संपत्ति सेट करने के लिए काम कर रहा है;)
फरीद अलनामृती

Chrome 58 पर यह काम नहीं करता है। चौड़ाई का उपयोग करें: 1px। यदि पासवर्ड फ़ील्ड पूरी तरह से छिपा हुआ है, तो क्रोम इसे सामान्य रूप से ऑटोफिल करता है। इसके अलावा z- इंडेक्स: -999 उपयोगी हो सकता है इसलिए यह किसी भी सामग्री को ओवरलैप नहीं करता है।
क्रिस्चियनकास्ट्रोइड

1
क्रोम <form *ngIf="!loggedIn()" #loginForm="ngForm" class="navbar-form navbar-right" (ngSubmit)="login()"><input type="password" style="width: 0;height: 0; visibility: hidden;position:absolute;left:0;top:0;"/><input type="text" #username="ngModel" placeholder="Username" class="form-control" required autocomplete="off" name="username" [(ngModel)]="model.username"><input type="password" #password="ngModel" placeholder="Password" class="form-control" required autocomplete="off" name="password" [(ngModel)]="model.password">...
67.3

19

यहां मेरे प्रस्तावित समाधान हैं, क्योंकि Google प्रत्येक कार्य को ओवरराइड करने पर जोर दे रहा है, जो लोगों को लगता है।

विकल्प 1 - क्लिक पर सभी पाठ का चयन करें

अपने उपयोगकर्ता के लिए उदाहरणों के लिए मानों को सेट करें (उदाहरण के लिए your@email.com), या फ़ील्ड का लेबल (उदा Email) और focus-selectअपने इनपुटों के लिए बुलाया गया वर्ग जोड़ें :

<input type="text" name="email" class="focus-select" value="your@email.com">
<input type="password" name="password" class="focus-select" value="password">

और यहाँ jQuery है:

$(document).on('click', '.focus-select', function(){
  $(this).select();
});

मैं वास्तव में Chrome को कभी भी मूल्यों के साथ खिलवाड़ करते नहीं देख सकता। वह पागल हो जाएगा। तो उम्मीद है कि यह एक सुरक्षित समाधान है।

विकल्प 2 - ईमेल मान को एक स्थान पर सेट करें, फिर उसे हटा दें

यह मानते हुए कि आपके पास दो इनपुट हैं, जैसे कि ईमेल और पासवर्ड, ईमेल फ़ील्ड के मान को " "(एक स्थान) पर सेट करें और विशेषता / मान जोड़ें autocomplete="off", फिर इसे जावास्क्रिप्ट के साथ साफ़ करें।आप पासवर्ड मान को खाली छोड़ सकते हैं।

यदि उपयोगकर्ता के पास किसी कारण से जावास्क्रिप्ट नहीं है, तो सुनिश्चित करें कि आप उनके इनपुट सर्वर-साइड ट्रिम (आप शायद वैसे भी होने चाहिए), यदि वे स्थान को नहीं हटाते हैं।

यहाँ jQuery है:

$(document).ready(function() {
  setTimeout(function(){
    $('[autocomplete=off]').val('');
  }, 15);
});

मैंने एक टाइमआउट तय किया 15क्योंकि5 मेरी परीक्षणों में कभी कभी काम करने के लिए लग रहा था, इसलिए trebling यह संख्या एक सुरक्षित शर्त की तरह लगता है।

क्रोम में एक अंतरिक्ष परिणाम के लिए प्रारंभिक मूल्य सेट करने में विफल होने से इनपुट पीला हो जाता है, जैसे कि उसने इसे ऑटो-भर दिया है।

विकल्प 3 - छिपे हुए इनपुट

इसे फॉर्म की शुरुआत में रखें:

<!-- Avoid Chrome autofill -->
<input name="email" class="hide">

सीएसएस:

.hide{ display:none; }

सुनिश्चित करें कि आप HTML नोट रखें ताकि आपके अन्य डेवलपर्स इसे नष्ट न करें! यह भी सुनिश्चित करें कि छिपे हुए इनपुट का नाम प्रासंगिक है।


@Vaia - क्या आपने किसी अन्य पृष्ठ पर नेविगेट करने और फिर बैक बटन दबाने की कोशिश की है? मुझे मिश्रित परिणाम मिलते हैं - इसे ट्विक करने की आवश्यकता हो सकती है।
rybo111

अगर आपने इसका मतलब है कि मैंने विकल्प 1 की कोशिश नहीं की है। इसके अलावा, मुझे सिर्फ अजाक्स-लोड किए गए मोडल पर ऑटोफिल को अक्षम करने की आवश्यकता थी जिसे बैक बटन के साथ नहीं बुलाया जाएगा। लेकिन अगर अन्य परिणाम होंगे, तो मैं आपको बताता हूं। @ rybo111
एलेक्सियोवे

@Vaia I का विकल्प 2 था - यदि आपको कोई समस्या आती है तो कृपया यहाँ उत्तर दें। धन्यवाद।
rybo111

15

सीएसएस पाठ-सुरक्षा का उपयोग करें : प्रकार = पासवर्ड का उपयोग किए बिना डिस्क

एचटीएमएल

<input type='text' name='user' autocomplete='off' />
<input type='text' name='pass' autocomplete='off' class='secure' />

or

<form autocomplete='off'>
    <input type='text' name='user' />
    <input type='text' name='pass' class='secure' />
</form>

सीएसएस

input.secure {
    text-security: disc;
    -webkit-text-security: disc;
}

सबसे अच्छा दृष्टिकोण मुझे अब तक मिला! ठीक है, कम से कम क्रोम 64 के लिए: /
स्किपर

मेरे उद्देश्यों के लिए यह एकदम सही है, धन्यवाद! Chrome इसे स्वत: पूर्ण या स्वत: पूर्ण नहीं करता है, इसे सहेजने की पेशकश नहीं करता है, और न केवल यह दृश्य से अस्पष्ट है, बल्कि क्लिपबोर्ड से भी है - मैंने कॉपी किया था कि मैंने क्या लिखा है और इसे नोटपैड में चिपकाया है और बस "" ••• •••••••• "। प्रतिभाशाली!
डॉग मैकलीन

15

कुछ मामलों में, ब्राउज़र स्वत: पूर्णता मानों का सुझाव देता रहेगा, भले ही स्वत: पूर्ण विशेषता बंद हो जाए। यह अप्रत्याशित व्यवहार डेवलपर्स के लिए काफी हैरान करने वाला हो सकता है। वास्तव में नो-आटोक्लेम्पशन को मजबूर करने की चाल विशेषता के लिए एक यादृच्छिक स्ट्रिंग असाइन करना है , उदाहरण के लिए:

autocomplete="nope"

RE: 'अनपेक्षित व्यवहार' यह व्यवहार Google द्वारा माना जाता है जो यह मानता है कि यह डेवलपर्स से बेहतर जानता है कि हर एक पृष्ठ को कैसे काम करना चाहिए। कभी-कभी मुझे सिर्फ एक कच्चा पासवर्ड इनपुट चाहिए, शून्य तामझाम।
नियमित जो

3
इस संयोजन ने मेरे लिए काम किया: भूमिका = "प्रस्तुति" स्वतः पूर्ण = "nope" क्रोम संस्करण 64.0.3282.186 (आधिकारिक बिल्ड) (64-बिट) पर परीक्षण किया गया। कितना बुरा सपना!
बिली जीन

2
रैंडम स्ट्रिंग क्रोम के लिए काम करता है लेकिन फायरफॉक्स नहीं। पूर्णता के लिए मैं "स्वत: पूर्ण = 'ऑफ-नो-कम्प्लीट' दोनों का उपयोग करता हूं और एक ऑनफोकस =" this.readOnly = false "के साथ आसानी से विशेषता सेट करता हूं। मेरा ऐप एक एंटरप्राइज अप्लीकेशन है जिसका उपयोग उपयोगकर्ता हजारों पतों को इनपुट करने के लिए करते हैं, इसलिए इसे नियंत्रित करने के लिए उपयोग-केस वास्तविक है - मैं जावास्क्रिप्ट के उपयोग की गारंटी भी दे सकता हूं, इसलिए कम से कम मुझे यह मिल गया है कि मेरे लिए
ChronoFish

13

मैंने पाया है कि इसे फ़ॉर्म में जोड़ने से Chrome को ऑटोफ़िल का उपयोग करने से रोकता है।

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>

यहां मिला। https://code.google.com/p/chromium/issues/detail?id=468153#hc41

वास्तव में निराशाजनक है कि क्रोम ने निर्णय लिया है कि यह डेवलपर से बेहतर तरीके से जानता है कि ऑटोकॉम को कब लाया जाए। एक वास्तविक Microsoft इसे महसूस करता है।


यह वास्तव में तथ्य नहीं है कि आप PreventChromeAutocomplete कहते हैं। मैं स्वत: पूर्ण = "बंद" और नाम = "somename" कहकर काम करने के लिए स्वत: पूर्ण होने में सक्षम था। लेकिन यह केवल तभी काम करता है जब आप एक ही नाम के दो अलग-अलग इनपुट्स का नाम दें। तो आपके मामले में PreventChromeAutocomplete दो अलग-अलग इनपुट पर लागू होना चाहिए। बहुत अजीब ...
जो हेमिंग

11
<input readonly onfocus="this.removeAttribute('readonly');" type="text">

ऑनफोकस घटना को हटाने के साथ टैग में आसानी से विशेषता जोड़ने से यह समस्या ठीक हो जाती है


यह समाधान पाठ क्षेत्रों पर काम करता है
डेनिस स्लोनोव्स्की

9

उपयोगकर्ता नाम पासवर्ड कॉम्बो के लिए यह हल करने के लिए एक आसान मुद्दा है। क्रोम हेयुरिस्टिक्स पैटर्न के लिए दिखता है:

<input type="text">

के बाद:

<input type="password">

बस इसे अमान्य करके इस प्रक्रिया को तोड़ें:

<input type="text">
<input type="text" onfocus="this.type='password'">

दुर्भाग्य से, यह केवल उपयोगकर्ता नाम / पासवर्ड प्रकार से अधिक पर लागू होता है। Chrome प्लेसहोल्डर टेक्स्ट को देखेगा कि उसे क्या सुझाव देना है। उदाहरण के लिए: jsbin.com/jacizu/2/edit
kentcdodds

यह मान्य है कि आप अभी भी ब्राउज़र सुझावों के साथ फ़ील्ड भर पाएंगे, जैसा कि आपका उदाहरण प्रदर्शित करता है, इसलिए यह ओप्स मुद्दे को वास्तव में संबोधित नहीं करता है। यह समाधान, बस ब्राउज़र को "स्वचालित रूप से" उपयोगकर्ता नाम और पासवर्ड के कॉम्बो से रोकता है जैसा कि शीर्ष उत्तर द्वारा उदाहरण में दिया गया है। यह कुछ के लिए उपयोग हो सकता है, लेकिन केवल स्वत: पूर्ण अक्षम करने के लिए एक अंत-सभी समाधान नहीं है, जिसे Google से आना होगा।
बर्नस्टो

4
यद्यपि, यदि आप अपने प्लेसहोल्डर पाठ के सामने एक स्थान जोड़ते हैं तो यह प्लेसहोल्डर के आधार पर ऑटो-सुझाव को भी अक्षम कर देगा। निश्चित रूप से एक हैक, हालांकि अन्य सुझावों की तुलना में अधिक नहीं है। jsbin.com/pujasu/1/edit
बर्नस्टो

वास्तव में ... यह आपके उदाहरण के लिए काम करने के लिए लग रहा था, लेकिन किसी कारण से यह मेरे लिए काम नहीं कर रहा है :-(
kentcdodds

हा! इसलिए इसे हैक कहा जाता है ... क्या आपके पास एक उदाहरण है जिसे आप साझा कर सकते हैं जहां यह काम नहीं कर रहा है?
बर्नस्टो

8

माइक नेल्सन ने बताया कि क्रोम 50.0.2661.102 मीटर में समाधान मेरे काम नहीं आया। बस प्रदर्शन के साथ एक ही प्रकार के इनपुट तत्व को जोड़ना: कोई भी सेट नहीं करता है देशी ब्राउज़र ऑटो-पूर्ण को अक्षम करता है। अब उस इनपुट फ़ील्ड के नाम विशेषता को डुप्लिकेट करना आवश्यक है जिसे आप स्वतः-पूर्ण अक्षम करना चाहते हैं।

इसके अलावा, इनपुट फ़ील्ड के डुप्लिकेट होने से बचने के लिए जब वे एक फार्म एलिमेंट के भीतर होते हैं, तो आपको उस एलीमेंट पर एलीमेंट रखना चाहिए जो प्रदर्शित नहीं होता है। यह उस तत्व को प्रपत्र कार्रवाई के भाग के रूप में प्रस्तुत करने से रोकेगा।

<input name="dpart" disabled="disabled" type="password" style="display:none;">
<input name="dpart" type="password">
<input type="submit">

2016 के जून के लिए और क्रोम 51.0.2704.106 मीटर के लिए यहाँ पर केवल काम करने वाला समाधान है
डेनिस

लेकिन क्या फॉर्म सही (दृश्यमान) इनपुट फ़ील्ड का चयन करेगा जिसकी आपको आवश्यकता है? क्योंकि यह एक ही नाम है।
एलेक्सियोवे जूल

@Vaia, डुप्लिकेट तत्व में अक्षम विशेषता जोड़ने से इसे सबमिट करने से रोका जा सकेगा।
mccainz

8

2016 में Google Chrome ने autocomplete=offW3C में होने के बावजूद इसे अनदेखा करना शुरू कर दिया । उत्तर उन्होंने पोस्ट किया :

यहाँ मुश्किल हिस्सा यह है कि कहीं भी वेब ऑटोकॉम्प्लीट = ऑफ की यात्रा के साथ-साथ कई फॉर्म फील्ड के लिए एक डिफ़ॉल्ट बन जाता है, बिना किसी वास्तविक विचार के, जैसे कि उपयोगकर्ताओं के लिए अच्छा था या नहीं। इसका मतलब यह नहीं है कि ऐसे बहुत वैध मामले नहीं हैं, जहाँ आप ब्राउजर ऑटोफिलिंग डेटा (उदाहरण के लिए CRM सिस्टम) नहीं चाहते हैं, लेकिन बड़े पैमाने पर, हम उन्हें अल्पसंख्यक मामलों के रूप में देखते हैं। और परिणामस्वरूप, हमने क्रोम ऑटोफिल डेटा के लिए स्वत: पूर्ण = बंद को अनदेखा करना शुरू कर दिया।

जो अनिवार्य रूप से कहता है: हम बेहतर जानते हैं कि उपयोगकर्ता क्या चाहता है।

स्वत: पूर्ण = बंद होने पर मान्य उपयोग के मामलों को पोस्ट करने के लिए उन्होंने एक और बग खोला

मैंने अपने सभी बी 2 बी एप्लिकेशन के माध्यम से स्वत: पूर्ण से जुड़े मुद्दों को नहीं देखा है, लेकिन केवल एक पासवर्ड प्रकार के इनपुट के साथ।

अगर स्क्रीन पर कोई पासवर्ड फ़ील्ड हो तो भी ऑटोफिल स्टेप्स एक छुपा हुआ है। इस तर्क को तोड़ने के लिए आप प्रत्येक पासवर्ड फ़ील्ड को स्वयं के रूप में रख सकते हैं यदि यह आपके स्वयं के पृष्ठ तर्क को नहीं तोड़ता है।

<input type=name >

<form>
    <input type=password >
</form>

4
चूँकि आपका उत्तर सबसे हाल का है, क्या आप इसे जोड़ सकते हैं autocomplete="pineapple"या कुछ अन्य अस्पष्ट भी समस्या को ठीक कर सकते हैं? कम से कम, यह मेरे अंत पर किया!
डौवे डी हैन

1
@DouwedeHaan यह तब तक ठीक है जब तक कि फॉर्म सहेजा नहीं जाता है, तब स्वत: पूर्ण सहेजे गए 'अनानास' क्षेत्र के लिए सिफारिशें प्रदान करेगा। लेकिन शायद उदाहरण के लिए स्वत: पूर्ण मूल्य के लिए एक यादृच्छिक हैश का उपयोग करने से यह गोल हो जाएगा?
डिगआउट

@ डगआउट मैं सहमत हूं। इस तरह के सामान के लिए UUID का उपयोग करने के लिए एक अच्छा उदाहरण होगा। बस सुनिश्चित करें कि स्ट्रिंग अद्वितीय है!
डौवे डी हैन

7

यदि आपको प्लेसहोल्डर रखने के साथ समस्या हो रही है, लेकिन क्रोम ऑटोफ़िल को अक्षम करने पर मुझे यह वर्कअराउंड मिला।

मुसीबत

एचटीएमएल

<div class="form">
    <input type="text" placeholder="name"><br>
    <input type="text" placeholder="email"><br>
    <input type="text" placeholder="street"><br>
</div>

http://jsfiddle.net/xmbvwfs6/1/

उपरोक्त उदाहरण अभी भी ऑटोफिल समस्या पैदा करता है, लेकिन यदि आप required="required"और कुछ सीएसएस का उपयोग करते हैं तो आप प्लेसहोल्डर्स को दोहरा सकते हैं और क्रोम टैग नहीं उठाएंगे।

समाधान

एचटीएमएल

<div class="form">
    <input type="text" required="required">
    <label>Name</label>  
    <br>
    <input type="text" required="required">
    <label>Email</label>    
    <br>
    <input type="text" required="required">
    <label>Street</label>    
    <br>
</div>

सीएसएस

input {
    margin-bottom: 10px;
    width: 200px;
    height: 20px;
    padding: 0 10px;
    font-size: 14px;
}
input + label {
    position: relative;
    left: -216px;
    color: #999;
    font-size: 14px;
}
input:invalid + label { 
    display: inline-block; 
}
input:valid + label { 
    display: none; 
}

http://jsfiddle.net/mwshpx1o/1/


यह एकमात्र समाधान है जो वास्तव में काम करता है। मुझे वास्तव में यह पसंद नहीं है, लेकिन यह अभी जो
क्रैमी

2017 तक, यह अभी भी ठीक काम करता है। inputयदि उपयोगकर्ता "नकली" प्लेसहोल्डर पर क्लिक करता है, तो इसे ध्यान केंद्रित करने के लिए बस इस स्क्रिप्ट की आवश्यकता है : $("label").on("click",function(){ $(this).prev().focus(); });ध्यान दें कि ... क्रोम इसे खोजने labelसे पहले नहीं हो सकता inputहै! अच्छा रचनात्मक समाधान! +1
लुईस पैट्रिस बेसेट

7

मुझे वास्तव में छिपे हुए क्षेत्र बनाना पसंद नहीं था, मुझे लगता है कि इसे बनाने से वास्तव में बहुत तेजी से भ्रमित हो जाएगा।

उन इनपुट फ़ील्ड पर, जिन्हें आप ऑटो से रोकना चाहते हैं, यह काम करेगा। फ़ील्ड को केवल पढ़ने पर केंद्रित करें और उस विशेषता को इस तरह हटाएं

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

इसके लिए आपको सबसे पहले फ़ील्ड को चुनकर रीड ओनली एट्रिब्यूट को हटाना होगा और उस समय सबसे अधिक संभावना है कि आप अपने स्वयं के उपयोगकर्ता इनपुट के साथ पॉपुलेट हो जाएँगे और ऑटोफिल को अपने कब्जे में ले लेंगे।


1
दुर्भाग्य से, यह अब काम नहीं करता है :-( jsbin.com/sobise/edit?html,css,output
kentcdodds

7

इससे पहले क्रोम द्वारा कैश किए गए मानों को ड्रॉपडाउन चयन सूची के रूप में प्रदर्शित किया जाता है। यह स्वत: पूर्ण = अक्षम किया जा सकता है, क्रोम की उन्नत सेटिंग्स में स्पष्ट रूप से सहेजा गया पता ऑटोफ़िल पॉपअप देता है जब एक पता फ़ील्ड फ़ोकस हो जाता है। यह स्वत: पूर्ण = "गलत" से अक्षम हो सकता है .लेकिन यह क्रोम को ड्रॉपडाउन में कैश्ड मूल्यों को प्रदर्शित करने की अनुमति देगा।

एक इनपुट HTML फील्ड पर निम्नलिखित दोनों बंद हो जाएंगे।

Role="presentation" & autocomplete="off"

एड्रेस ऑटोफिल क्रोम के लिए इनपुट फील्ड का चयन करते समय उन इनपुट फील्ड को नजरअंदाज कर देते हैं, जिनमें लेबल html एलिमेंट नहीं होता है।

यह सुनिश्चित करने के लिए कि क्रोम पार्सर ऑटोफिल पते के लिए एक इनपुट फ़ील्ड को अनदेखा करता है एक छिपे हुए बटन को पॉपअप करता है या लेबल और टेक्स्टबॉक्स के बीच छवि नियंत्रण जोड़ा जा सकता है। यह ऑटोफिल के लिए लेबल -input जोड़ी निर्माण के क्रोम पार्सिंग अनुक्रम को तोड़ देगा। पता फ़ील्ड के लिए पार्स करते समय चेकबॉक्स की उपेक्षा की जाती है

क्रोम भी लेबल तत्व पर "के लिए" विशेषता मानता है। इसका उपयोग क्रोम के पार्सिंग अनुक्रम को तोड़ने के लिए किया जा सकता है।


मैं तुमसे प्यार करता हूँ। इस पृष्ठ पर एकमात्र समाधान जो वास्तव में काम करता है।
डेविस वॉटरबरी

वर्ष 2020 में काम नहीं करता है।
काई Noack

7

खैर जब से हम सभी को यह समस्या हुई है मैंने इस मुद्दे के लिए काम करने वाले jQuery एक्सटेंशन को लिखने के लिए कुछ समय का निवेश किया है। Google को html मार्कअप का पालन करना है, न कि हम Google का अनुसरण करें

(function ($) {

"use strict";

$.fn.autoCompleteFix = function(opt) {
    var ro = 'readonly', settings = $.extend({
        attribute : 'autocomplete',
        trigger : {
            disable : ["off"],
            enable : ["on"]
        },
        focus : function() {
            $(this).removeAttr(ro);
        },
        force : false
    }, opt);

    $(this).each(function(i, el) {
        el = $(el);

        if(el.is('form')) {
            var force = (-1 !== $.inArray(el.attr(settings.attribute), settings.trigger.disable))
            el.find('input').autoCompleteFix({force:force});
        } else {
            var disabled = -1 !== $.inArray(el.attr(settings.attribute), settings.trigger.disable);
            var enabled = -1 !== $.inArray(el.attr(settings.attribute), settings.trigger.enable);
            if (settings.force && !enabled || disabled)
                el.attr(ro, ro).focus(settings.focus).val("");
        }
    });
};
})(jQuery);

बस इसे /js/jquery.extends.js जैसी फ़ाइल में जोड़ें और इसे पिछले jQuery शामिल करें। इसे दस्तावेज़ के लोड पर प्रत्येक प्रपत्र तत्वों पर इस तरह लागू करें:

$(function() {
    $('form').autoCompleteFix();
});

परीक्षण के साथ jsfiddle


6

निम्नलिखित jQueryकोड का प्रयास करें जो मेरे लिए काम किया है।

if ($.browser.webkit) {
    $('input[name="password"]').attr('autocomplete', 'off');
    $('input[name="email"]').attr('autocomplete', 'off');
}

भयानक भयानक समाधान
DKR

आप केवल autocomplete="off"jquery का उपयोग करने के बजाय इनपुट फ़ील्ड में जोड़ सकते हैं । और वैसे, यह काम नहीं करता है। Chrome पासवर्ड सुझाव अभी भी दिखाई दे रहे हैं।
काई नोएक

6

इसके दो टुकड़े हैं। Chrome और अन्य ब्राउज़र फ़ील्ड नामों के लिए पहले से दर्ज किए गए मानों को याद रखेंगे, और उस पर आधारित उपयोगकर्ता को एक स्वत: पूर्ण सूची प्रदान करेंगे (विशेष रूप से, पासवर्ड प्रकार के आदान-प्रदान को कभी - कभी इस तरह से याद नहीं किया जाता है, काफी स्पष्ट कारणों के लिए)। आप इसे autocomplete="off"अपने ईमेल फ़ील्ड जैसी चीज़ों पर रोकने के लिए जोड़ सकते हैं ।

हालाँकि, आपके पास फिर पासवर्ड फिलर्स हैं। अधिकांश ब्राउज़रों की अपनी अंतर्निहित कार्यान्वयन हैं और कई तृतीय-पक्ष उपयोगिताओं भी हैं जो इस कार्यक्षमता को प्रदान करती हैं। यह, आप रोक नहीं सकते । यह उपयोगकर्ता इस जानकारी को बाद में स्वचालित रूप से भरने के लिए बचाने के लिए अपनी पसंद बना रहा है, और आपके आवेदन के प्रभाव के दायरे और क्षेत्र से पूरी तरह बाहर है।


इस उत्तर का पहला भाग अब सत्य प्रतीत नहीं होता: क्रोम बग
जोशुआ ड्रेक

मुझे यकीन नहीं है कि तुम किस बारे में हो। यह "बग" क्रोमियम के लिए लोगों के उपयोग के मामलों को इकट्ठा करने के लिए सिर्फ एक प्लेसहोल्डर है autocomplete="off"। यह संभव है कि इसे हटाने का इरादा है, लेकिन यह कभी स्पष्ट रूप से नहीं कहा गया है, और निश्चित रूप से उस मानसिक छलांग की आवश्यकता नहीं है। वे सिर्फ इसके इलाज के वैकल्पिक या बेहतर तरीकों पर विचार करना चाह सकते हैं। भले ही, यह अभी भी कल्पना का हिस्सा है, और फिर, कोई संकेत नहीं है कि यह कल्पना को छोड़ देगा। और, यह अभी भी सभी ब्राउज़रों में काम करता है जहाँ तक मुझे पता है, क्रोम सहित।
क्रिस प्रैट

हमारे पास ऐसे कुछ मामले हैं जिनमें Chrome द्वारा स्वतः पूर्ण = "बंद" का सम्मान नहीं किया जा रहा है।
यहोशू ड्रेक

1. उपाख्यानों के एक जोड़े के पास सबूत के लिए राशि नहीं है। 2. जैसा कि मैंने अपने उत्तर में कहा है, फॉर्म भरने के एक्सटेंशन और पसंद नहीं हो सकता है और अक्सर यह सम्मान नहीं करता है। अंत में, सभी चीजों की तरह, यह ग्राहक के लिए है, और इसलिए उपयोगकर्ता। आप केवल यह कर सकते हैं कि यह सुझाव दिया जाए कि यह स्वतः पूर्ण नहीं होना चाहिए।
क्रिस प्रैट

6

के अनुसार क्रोमियम बग रिपोर्ट # 352,347 Chrome अब सम्मान autocomplete="off|false|anythingelse", न तो रूपों पर और न ही इनपुट पर।

मेरे लिए काम करने वाला एकमात्र समाधान डमी पासवर्ड फ़ील्ड जोड़ना था :

<input type="password" class="hidden" />
<input type="password" />

6

यहां काम करने के autocompleteलिए सेटिंग करके offमेरे पास एक उदाहरण है जो कि Google द्वारा खोज पृष्ठ में उपयोग किया जाता है। मुझे यह निरीक्षण तत्व से मिला।

यहाँ छवि विवरण दर्ज करें

संपादित करें : यदि offकाम नहीं कर रहा है तो कोशिश करें falseया nofill। मेरे मामले में यह क्रोम संस्करण 48.0 के साथ काम कर रहा है


5

यहाँ एक गंदा हैक है -

आपके पास यहां अपना तत्व है (अक्षम विशेषता जोड़कर):

<input type="text" name="test" id="test" disabled="disabled" />

और फिर अपने वेबपेज के नीचे कुछ जावास्क्रिप्ट डालें:

<script>
    setTimeout(function(){
        document.getElementById('test').removeAttribute("disabled");
        },100);
</script>

5

विभिन्न समाधान, वेबकिट आधारित। जैसा कि पहले ही उल्लेख किया गया है, कभी भी Chrome को एक पासवर्ड फ़ील्ड मिलती है, जो ईमेल को स्वतः पूर्ण करता है। AFAIK, यह स्वत: पूर्ण [जो भी हो] की परवाह किए बिना है।

इसे बदलने के लिए इनपुट प्रकार को टेक्स्ट में बदलें और वेबकिट सिक्योरिटी फॉन्ट को जिस भी रूप में चाहें, लागू करें।

.secure-font{
-webkit-text-security:disc;}

<input type ="text" class="secure-font">

मैं जो देख सकता हूं, वह कम से कम इनपुट प्रकार = पासवर्ड के रूप में सुरक्षित है, यह कॉपी और पेस्ट सुरक्षित है। हालाँकि यह शैली को हटाकर कमजोर है जो तारांकन को हटा देगा, निश्चित रूप से इनपुट प्रकार = पासवर्ड को कंसोल में किसी भी स्वतःभरे पासवर्ड को प्रकट करने के लिए इनपुट टाइप = टेक्स्ट में आसानी से बदला जा सकता है, इसलिए यह वास्तव में बहुत अधिक है।


धन्यवाद! यह केवल एक चीज है जो क्रोम 49 में काम करती है। पिछले तरीकों को तोड़ दिया गया है क्योंकि क्रोम type="password"अब के साथ सभी इनपुट को भरने लगता है ।
एपेलक

4

मेरे लिए काम करने का एकमात्र तरीका था: (jQuery की आवश्यकता)

$(document).ready(function(e) {
    if ($.browser.webkit) {
        $('#input_id').val(' ').val('');
    }
});

4

मैंने उसी समस्या का सामना किया है। और यहाँ क्रोम पर स्वत: भरण उपयोगकर्ता नाम और पासवर्ड के लिए समाधान है (केवल क्रोम के साथ परीक्षण किया गया है)

    <!-- Just add this hidden field before password as a charmed solution to prevent auto-fill of browser on remembered password -->
    <input type="tel" hidden />
    <input type="password" ng-minlength="8" ng-maxlength="30" ng-model="user.password" name="password" class="form-control" required placeholder="Input password">

अजीब तय है, लेकिन किसी भी तरह यह एकमात्र चीज है जो मेरे लिए क्रोम 48 पर काम करती है :)
जैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.