प्रतिक्रिया स्वतः पूर्ण नहीं करती है


जवाबों:


159

राजधानी "सी" autoComplete। यह प्रतिक्रिया दस्तावेज में उल्लिखित है:

https://facebook.github.io/react/docs/tags-and-attributes.html


16
हमेशा एक अपवाद को फेंक दें, न कि केवल चुपचाप त्रुटियों को अनदेखा करें।
यारोस्लाव

1
@Yaroslav यह संभव प्रतिक्रिया, नहीं करता है, तो यह होगा इस के लिए एक चेतावनी फेंकता github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/...
azium

1
लेकिन यह भी, यह त्रुटि नहीं है क्योंकि प्रॉप्स कुछ भी हो सकता है .. जब आप अपना स्वयं का प्रोप बना रहे हैं या एचटीएमएल विशेषता का उपयोग कर रहे हैं तो रिएक्ट कैसे जानता है?
अज़ीम

HTML टैग्स के लिए Props कुछ भी नहीं हो सकता है।
यारोस्लाव

मैं समझता हूं कि आप ऐसा क्यों सोचेंगे, लेकिन याद रखें कि ये JSX टैग एक प्रकार की स्ट्रिंग के साथ फ़ंक्शन कॉल के लिए ट्रांसप्लड हो जाते हैं जो टैग प्रकार का प्रतिनिधित्व करता है।
अज़ीम

67

आपको लगाना चाहिए:

autoComplete="new-password"

यह स्वत: पूर्ण को हटा देगा


13
मुझे वास्तव में नहीं मिलता कि यह "ऑफ" के बजाय क्यों काम करता है। अजीब।
अजय

4
@AjayGupta डेवलपर.
Pim

@ पिम समझ में आता है। धन्यवाद!
अजय

1
आप एक किंवदंती हैं, धन्यवाद! यह भी समझ में आता है, मैं चाहता था कि मेरा नया-पासवर्ड फ़ील्ड स्वतःपूर्ण न हो: D
Erik Kubica

संभवतः क्रोम newनाम के भीतर पहचान रहा है । मैंने इसे अब नाम दिया है autoComplete="new-off"जो मेरे लिए थोड़ा अधिक समझ में आता है अगर यह पासवर्ड फ़ील्ड नहीं है और यह ठीक काम करता है: D
kenn

7

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

इसने मेरे लिए काम किया (प्रतिक्रिया-बूटस्ट्रैप):

<FormControl
  value={this.state.value}
  autoComplete="nope"
  {...props}
/>

वाह, यह अजीब है, लेकिन यह केवल एक चीज है जो मेरे लिए अब तक काम कर रही है।
व्यालियम जुड

1
@ पिम मम यह समान है autocompleteऔर autofill? क्योंकि यह क्रोम का उपयोग करके मेरे लिए काम नहीं करता है। यह फॉर्म को उसी फॉर्म के साथ भेजे गए पिछले मानों के साथ स्वत: स्फूर्त रखता है।
अलेक्सवेंटुरायो जूल

6

यदि आपने सही उत्तर पढ़ा है और अभी भी यह समस्या है (विशेष रूप से क्रोम में), तो क्लब में आपका स्वागत है ... इसलिए जांचें कि मैंने इसे कैसे पूरा किया है:

<form autoComplete="new-password" ... >
        <input name="myInput" type="text" autoComplete="off" id="myInput" placeholder="Search field" />
</form>

टिप्पणियाँ

  • फॉर्म में इनपुट तत्व के प्रत्यक्ष अभिभावक होने की आवश्यकता नहीं है
  • इनपुट के लिए एक नाम विशेषता की आवश्यकता होती है
  • यह रिएक्ट-बूटस्ट्रैप <FormControl/>टैग (इसके बजाय <input/>) के साथ भी काम करता है

यह काम नहीं करता है। मैं क्रोम 67 के साथ कोशिश कर रहा हूं। कुछ नहीं। मुझे अभी भी प्रदर्शन के साथ नकली इनपुट की आवश्यकता है: कोई नहीं! बहुत पागल!

प्रतिक्रिया के लिए धन्यवाद, लेकिन क्या आपका मामला सभी 3 बुलेट नोटों पर टिक करता है?
w3jimmy 16

कुछ मामलों में मुझे अभी भी इसके साथ ऑटोसजेशन मिल रहे थे। अधिक संपूर्ण समाधान के लिए मेरा उत्तर देखें।
Pim

5

इनमें से कोई भी समाधान वास्तव में Chrome 80 पर काम नहीं किया है।

परीक्षण और त्रुटि के घंटों के बाद, इस बहुत ही अजीब हैक ने मेरे लिए काम किया:

  1. autoComplete="none"प्रत्येक में जोड़ें <input>- Google अब स्वत: पूर्ण = "बंद" हो जाता है
  2. अपने खेतों को एक कंटेनर में लपेटें: <form>या<div>
  3. आपको कम से कम एक मान्य इनपुट फ़ील्ड की आवश्यकता है autoComplete="on"। यह कंटेनर में अंतिम तत्व होना चाहिए। इसलिए मैंने निम्न इनपुट फ़ील्ड को अपने फ़ॉर्म के नीचे जोड़ा:
<input 
  type="text" 
  autoComplete="on" 
  value="" 
  style={{display: 'none', opacity: 0, position: 'absolute', left: '-100000px'}} 
  readOnly={true}
/>

3

स्वत: पूर्ण = "कोई नहीं" - मेरे लिए काम करता है।


2
आपका स्वागत है एलेक्स। अपने उत्तर के साथ और अधिक क्रियाशील होने का प्रयास करें। पोंटिंग ने कहा कि "autoComplete" के आवरण के कारण आपका समाधान महत्वपूर्ण है।
जेनिफर गोनक्लेव


0

@ Azium के उत्तर के अलावा, टैग के <input>अंदर रखा जाना चाहिए <form>, फिर autoCompleteकाम करता है


0

मैंने इसे सिर्फ एक लाइन से हल किया:

यदि आप "changeHandler ()" और घटकों की स्थिति के साथ अनुशंसित तरीके का उपयोग करते हैं, तो बस डालें:

changeHandler = (e) => {    
  if (!e.isTrusted) return;
  ... your code
}

उस परिवर्तन पर अधिक जानकारी प्राप्त करें (हैंडलर) - Thing:
https://reactjs.org/docs/forms.html#controlled-compenders


2
जब Google क्रोम मेरा इनपुट ऑटोफिल करता है, तो e.isTrusted सत्य है: D
इवान

0

मैंने कई विकल्पों को भी आज़माया है, लेकिन मैंने जो किया है वह <form>टैग के साथ <div>टैग को बदलने और प्रत्येक इनपुट को मैन्युअल रूप से प्रबंधित करने के लिए था जो मुझे उस रूप में मिला था।


0

यहाँ "यह मेरी मशीन पर काम करता है"

क्रोम संस्करण 83.0.4103.116 और प्रतिक्रिया। मेरे लिए काम की चाल की तरह लग रहा है यह एक फार्म के अंदर डाल दिया और स्वत: पूर्ण विशेषता जोड़ने के लिए है। सूचना यदि आप एक गैर-प्रतिक्रिया एप्लिकेशन पर यह कोशिश करते हैं, तो आपको लोअरकेस सी के साथ स्वत: पूर्ण करना होगा

 <form autoComplete="off">
      <input type="text" autoComplete="new-password" />
 </form>

तथा

<form autoComplete="new-password">
  <input type="text" autoComplete="new-password" />
</form>

0

अधिकांश सुझाव यहां और अन्य जगहों पर दिसंबर 2020 तक विफल रहे। मुझे लगता है कि मैंने उन सभी की कोशिश की, फॉर्म रैपर, "न्यूपासवर्ड" के "बंद" (न ही काम किए गए) को स्वत: पूर्ण स्थापित करते हुए, ऑनफोकस का उपयोग करते हुए, सुनिश्चित करें कि मैं स्वत: पूर्ण और स्वत: पूर्ण नहीं हूं। (पूंजीकरण नहीं) लेकिन उनमें से किसी ने भी मदद नहीं की।

अंत में mscott2005 दृष्टिकोण ने मेरे लिए (+1) काम किया, लेकिन मैंने इसे एक और न्यूनतम उदाहरण के लिए भी साझा किया, जिसे मैं दूसरों के लिए एक उत्तर के रूप में पोस्ट कर रहा हूं:

कोई प्रपत्र आवश्यक नहीं था, बस दो इनपुट टैग:

  • autocomplete = "off" इच्छित क्षेत्र पर

    <input ... autoComplete="off" />

  • autocomplete = "on" नकली छिपे हुए मैदान पर

    <input

    id="fake-hidden-input-to-stop-google-address-lookup"
    autoComplete="on"
    style={{ display: 'none'}}>
    

आईडी सबसे अच्छा है जो मेरे पास दस्तावेज के लिए है जो वास्तव में एक टिप्पणी का उपयोग किए बिना हैक है।

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