ब्राउज़र को यह बताने के लिए पृष्ठ बनाएं कि इनपुट मूल्यों को कैश / संरक्षित नहीं किया जाए


116

अधिकांश ब्राउज़र कैश मान इनपुट मान बनाते हैं। इसलिए जब उपयोगकर्ता किसी पृष्ठ को ताज़ा करता है, तो इनपुट में समान मान होते हैं।

यहाँ मेरी समस्या है। जब कोई उपयोगकर्ता सहेजें पर क्लिक करता है , तो सर्वर POSTed डेटा (उदाहरण के लिए चेक किए गए उत्पाद) को मान्य करता है, और यदि मान्य नहीं है, तो इसे वापस ब्राउज़र में भेजता है। हालांकि, जैसा कि ऊपर कहा गया है, भले ही सर्वर कुछ मूल्यों के लिए चयन को साफ करता है, फिर भी वे ब्राउज़र कैश के कारण चुने जा सकते हैं!

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

यह करने से हल किया जा सकता है Ctrl+ F5, लेकिन यह भी एक समाधान नहीं है। क्या ब्राउज़र को यह बताने का कोई स्वचालित / प्रोग्रामेटिक तरीका है कि किसी फ़ॉर्म / पृष्ठ पर फ़ॉर्म डेटा को कैश न करें?


1
है <form autocomplete="off"...आप के लिए एक विकल्प? क्या यह समस्या सभी ब्राउज़रों या विशेष रूप से केवल एक में हो रही है?
डेविड कोलार

क्या <select>सूची छोड़ने के संदर्भ में इस प्रश्न का उत्तर देने का एक तरीका है । मेरे पास एक सूची है और एक selectedविकल्प को परिभाषित किया है लेकिन पृष्ठ को ताज़ा करना पिछले चयनित विकल्पों को बरकरार रखता है।
मार्टिन

मैं विपरीत प्राप्त करना चाहता हूं - बैक बटन पर प्रत्येक पृष्ठ के इनपुट मानों को संरक्षित करें (तदनुसार दो बार इनपुट प्राप्त करें)। JS कोड के बहुत से उपयोग के आसपास विभिन्न उदाहरण हैं, (जो वास्तव में IMHO काम नहीं करते हैं) लेकिन - क्या एक सरल तरीका है? मैंने स्वत: पूर्ण = "चालू" दोनों रूपों और इनपुट फ़ील्ड पर काम करने की कोशिश नहीं की है। ब्राउज़र क्रोम है।
दिमित्री z

जवाबों:


197

क्या आप स्पष्ट रूप से मान को रिक्त मान रहे हैं? उदाहरण के लिए:

<input type="text" name="textfield" value="">

जहां यह नहीं होना चाहिए में डेटा डालने वाले ब्राउज़र को रोकना चाहिए। वैकल्पिक रूप से, आप autocompleteविशेषता को प्रपत्र टैग में जोड़ सकते हैं :

<form autocomplete="off" ...></form>

1
मैं चेकबॉक्स के बारे में बात करता हूं इसलिए मैं "" के लिए मूल्य निर्धारित नहीं कर सकता। और, क्या स्वत: पूर्णता का अर्थ है कि "उपयोगकर्ता द्वारा F5 दबाए जाने पर", "ड्रॉपडाउन ऑटोकॉमप्लेक्शन सूची के लिए" ही नहीं, फॉर्म इनपुट वैल्यू को स्टोर न करें?
रानी ३

2
Developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion , autcompletion = के अनुसार कम से कम गेको में "सत्र इतिहास कैशिंग" को प्रभावित करता है। अगर मुझे जो चाहिए उसके लिए काम करता है तो मैं परीक्षण करूंगा।
रानी 3

1
@ रानी 3: हां, चेकबॉक्स एक समस्या है क्योंकि स्पष्ट रूप से "चेक नहीं किया गया" कहने का कोई तरीका नहीं है। यदि आपको अभी भी समस्या हो रही है, तो आप कोशिश कर सकते हैं checked="false", यह कुछ ब्राउज़रों में काम कर सकता है। एक अन्य विकल्प जावास्क्रिप्ट / jQuery का उपयोग करना है ताकि पृष्ठ लोड पर सभी चेकबॉक्स को स्पष्ट रूप से अनचेक किया जा सके।
असंतुष्टगीतगत

1
@ रानी 3, आपका मतलब है "स्वत: पूर्ण = बंद" नहीं "स्वसंपूर्णता = बंद"
मैट बेकर

2
जवाब और सुझाव के सभी मेरे लिए काम नहीं किया। क्रोम का उपयोग करना और develeoping .net
हकान

45

से एक स्टैक ओवरफ़्लो संदर्भ

यह मान के साथ काम नहीं करता था = "" यदि ब्राउज़र पहले से ही मूल्य बचाता है तो आपको जोड़ना चाहिए।

इनपुट टैग के लिए आपके द्वारा सेट की गई विशेषता स्वतः पूर्ण हो सकती है:

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

आप एक फॉर्म के लिए भी स्वतः पूर्ण का उपयोग कर सकते हैं।


9
क्रोम में, यह प्रकट autocomplete="off"नहीं होता है जब व्यक्तिगत फॉर्म-तत्वों पर उपयोग किया जाता है - यहां तक ​​कि valueविशेषता के साथ स्पष्ट रूप से रिक्त सेट करें, और Cache-Control: Must-Revalidateहेडर भेजते समय , इसका कोई प्रभाव नहीं था। मुझे क्रोम में इस व्यवहार को दबाने के लिए खुद तत्व autocomplete="off"को विशेषता को लागू करना था <form>
mindplay.dk

मैंने स्वत: पूर्ण = "बंद" किया था, लेकिन यह मेरे लिए काम नहीं करता था
किंग्सले साइमन

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

1
ऐसा लगता है कि ब्राउज़र का व्यवहार बदल गया है: developer.mozilla.org/en-US/docs/Web/Security/…
david

और HTML मान्य फॉर्म नोट किया जाए। और उदाहरण के लिए एक और के अंदर नहीं इसके आदि
shareef

10

HTML में फ़ॉर्म के ठीक बाद जावास्क्रिप्ट का उपयोग करके फ़ॉर्म को रीसेट करने का एक और तरीका होगा:

<form id="myForm">
  <input type="text" value="" name="myTextInput" />
</form>

<script type="text/javascript">
  document.getElementById("myForm").reset();
</script>


6

इसने मेरे लिए नए ब्राउज़रों में काम किया:

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