এইচটিএমএল ফর্মের স্বতঃপূরণ অক্ষম করার জন্য কি ডাব্লু 3 সি বৈধ উপায় আছে?


424

xhtml1-transitional.dtdডক্টিপ ব্যবহার করার সময় , নিম্নলিখিত HTML সহ ক্রেডিট কার্ড নম্বর সংগ্রহ করুন

<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>

ডাব্লু 3 সি বৈধকারীর উপর একটি সতর্কতা পতাকাঙ্কিত করবে:

"স্বয়ংসম্পূর্ণ" কোনও বৈশিষ্ট্য নেই।

কোনও ফর্মের সংবেদনশীল ক্ষেত্রগুলিতে ব্রাউজার স্বয়ংক্রিয়-সম্পূর্ণ অক্ষম করার জন্য কি ডাব্লু 3 সি / মানক উপায় আছে?


10
আপনি কি নিশ্চিত যে ব্যবহারকারীর স্বতঃপূরণ সেটিংসের সাথে জগাখিচুড়ি করা আপনি যা করতে চান? যদি তারা এটি চালু করে থাকে তবে তারা সম্ভবত এটি পছন্দ করে। স্বয়ংসম্পূর্ণ, একটি সম্পূর্ণরূপে ব্রাউজার প্রান্তের বৈশিষ্ট্য অনেক পরিবর্তন বোতামে ফন্টের আকার, ইত্যাদি আপনি তাদের ইচ্ছাকে হস্তক্ষেপ করা উচিত নয় ব্যবহারকারীর অনুমতি দেয় যে ভালো
rmeador

113
এমনকি ক্রেডিট কার্ড নম্বর হিসাবে সংবেদনশীল কিছু জন্য? আমি এমন অনেক লোকের কথা ভাবতে পারি না যারা এই স্মরণ রাখতে চায় - বিশেষত যেহেতু বেশিরভাগ ব্রাউজারগুলিতে ডিফল্টরূপে অটো-সম্পূর্ণ হয়। যদি তারা এটি খারাপ মনে রাখতে চায় তবে তারা এমন কিছু ব্যবহার করতে পারে যা গুগল টুলবারের মতো ফর্ম পূরণ করে।
ম্যাট বি

13
আমার ব্যবহারের কেসটি কিছুটা আলাদা - আমি আমার নিজের স্বয়ংসম্পূর্ণতা ঘুরিয়ে নিচ্ছি এবং আমি এটি ব্রাউজারের সাথে সংঘাতবদ্ধ হতে চাই না। আমি কেবল আবিষ্কার করেছি যে স্বতঃসমাপ্তি = "অফ" অবৈধ, তবে মনে হচ্ছে এটির অন্য কোনও সহজ সমাধান নেই (
জেএস

13
@ আরমিডোর কারণ মাঝে মাঝে আমরা স্ট্যান্ডার্ড অটো-পরামর্শ বাক্সের জন্য আরও বেশি ব্যবহারকারী-বান্ধব বিকল্প সরবরাহ করতে চাই। @ কোরিডোরাগুলি দয়া করে আপনার ওএসএক্স ওজনকে প্রায় চাপ দিন না, এটি এই প্রশ্নের সমাধানে সহায়ক নয়।
জোশ এম।

12
সমস্যাটি হ'ল কোনও প্রতারণামূলক লেনদেন ঘটলে ব্যাংকগুলি মার্চেন্টকে দায়বদ্ধ রাখবে ... এমনকি গ্রাহকের 100% দোষ থাকলেও। অতএব, কিছু পরিস্থিতিতে গ্রাহকের জন্য বৈশিষ্ট্যটি অক্ষম করা বৈধ।
আলেকজান্দ্রে এইচ। ট্রাম্বেলে

উত্তর:


421

এখানে এমডিসির একটি ভাল নিবন্ধ রয়েছে যা স্বয়ংক্রিয়তা তৈরির সমস্যাগুলি (এবং সমাধানগুলি) ব্যাখ্যা করে। মাইক্রোসফ্টও এখানে কিছু অনুরূপ প্রকাশ করেছে ।

সত্যি কথা বলতে কী, যদি এটি আপনার ব্যবহারকারীদের কাছে গুরুত্বপূর্ণ কিছু হয় তবে এইভাবে 'ব্রেকিং' মানগুলি যথাযথ বলে মনে হয়। উদাহরণস্বরূপ, অ্যামাজন 'স্বয়ংক্রিয়রূপে' বৈশিষ্ট্যটি বেশ কিছুটা ব্যবহার করে এবং এটি বেশ কার্যকর বলে মনে হচ্ছে।

আপনি যদি সতর্কতাটিকে পুরোপুরি মুছে ফেলতে চান তবে আপনি জাভাস্ক্রিপ্ট ব্যবহার করে ব্রাউজারগুলিকে এটি সমর্থন করে এমন বৈশিষ্ট্য প্রয়োগ করতে পারেন (IE এবং ফায়ারফক্স গুরুত্বপূর্ণ ব্রাউজারগুলি) ব্যবহার করে someForm.setAttribute( "autocomplete", "off" ); someFormElm.setAttribute( "autocomplete", "off" );

অবশেষে, যদি আপনার সাইটটি এইচটিপিপিএস ব্যবহার করে, তবে স্বয়ংক্রিয়ভাবে স্বয়ংক্রিয়ভাবে সম্পূর্ণ হওয়া বন্ধ করে দেয় (যতটা আমি জানি অন্য কোনও ব্রাউজারের মতো)।

হালনাগাদ

যেহেতু এই উত্তরটি এখনও বেশ কয়েকটি উত্সাহ পেয়েছে, আমি কেবল এটি উল্লেখ করতে চেয়েছিলাম যে এইচটিএমএল 5 এ আপনি নিজের ফর্মের উপাদানটিতে 'স্বতঃপূরণ' বৈশিষ্ট্যটি ব্যবহার করতে পারেন। এর জন্য ডাব্লু 3 সি তে ডকুমেন্টেশন দেখুন ।


41
দেখে মনে হচ্ছে ফায়ারফক্স https এ স্বয়ংসম্পূর্ণতা বন্ধ করে না, তবে এটি জ্ঞানের একটি দরকারী অংশ। ধন্যবাদ!
ম্যাট বি বি

3
সাফারি স্বতঃপূরণ = "অফ" গুণকে সম্মান করে না। দেখুন stackoverflow.com/questions/22817801/...
Skurpi

1
autocompleteব্যবহার করা যেতে পারে না শুধুমাত্র উপর formউপাদান , এবং offঅন্তত মান কাজchromium-40.0.2214.115
এক্স-ইউরি

ডাব্লু 3 সি এইচটিএমএল 5.1-এ স্বয়ংক্রিয়রূপের জন্য মানগুলি প্রসারণ করছে বলে মনে হচ্ছে (এই মন্তব্য হিসাবে খসড়া) w3c.github.io/html/…
জাস্টিন

1
যদি কিছু কাজ না করে তবে স্বতঃপূরণ বন্ধ করতে পাঠ্যবক্সের পরিবর্তে টেক্সটরিয়া ব্যবহার করুন।
বিসিয়েন

64

আমি খুব অবাক হব যদি ডাব্লু 3 সি এমন কোনও উপায় প্রস্তাব করত যা (এক্স) এইচটিএমএল 4 এর সাথে কাজ করবে। স্বতঃসম্পূর্ণ বৈশিষ্ট্যটি সম্পূর্ণ ব্রাউজার-ভিত্তিক, এবং গত বছরগুলিতে প্রবর্তিত হয়েছিল (HTML4 স্ট্যান্ডার্ডটি লেখার পরে ভাল)।

যদিও এইচটিএমএল 5 থাকে তবে অবাক হবেন না।

সম্পাদনা: আমি ভাবলাম, HTML5 এর কাজ করে যে আছে বৈশিষ্ট্য। আপনার পৃষ্ঠাটি এইচটিএমএল 5 হিসাবে সংজ্ঞায়িত করতে নিম্নলিখিত ডক্টাইপটি ব্যবহার করুন (যেমন: এটি আপনার উত্স কোডটিতে প্রথম পাঠ্য হিসাবে রেখে দিন) put মনে রাখবেন যে সমস্ত ব্রাউজারগুলি এখনও এই খসড়া-আকারে না থাকায় এই মানটিকে সমর্থন করে না।

<!DOCTYPE html>

7
সমস্ত ব্রাউজারগুলি কনকরার এর পুরানো সংস্করণ সমর্থন করে বলে আশা করে। এমনকি আই 6 এটি সমর্থন করে। এটা ডক্টাইপ যেতে হবে।
বালুসসি

56

এইচটিএমএল 4 : না

এইচটিএমএল 5 : হ্যাঁ

স্বতঃপূণ বৈশিষ্ট্য একটি গণিত বৈশিষ্ট্য। গুণটির দুটি রাজ্য রয়েছে। উপর রাষ্ট্র উপর শব্দ মানচিত্র এবং বন্ধ বন্ধ অবস্থায় শব্দ মানচিত্র। বৈশিষ্ট্যটিও বাদ দেওয়া যেতে পারে। অনুপস্থিত মান ডিফল্ট হ'ল অন স্টেট। বন্ধ রাষ্ট্র ইঙ্গিত করে যে ডিফল্টরূপে, আকারে ফর্ম নিয়ন্ত্রণ তাদের স্বতঃপূর্ণ ক্ষেত্র নাম সেট থাকবে বন্ধ ; অন ​​স্থিতি নির্দেশ করে যে ডিফল্টরূপে, ফর্মের ফর্ম নিয়ন্ত্রণগুলিতে তাদের autofillক্ষেত্রের নামটি "চালু" থাকবে।

তথ্যসূত্র: ডাব্লু 3


@ freestock.tk হ্যাঁ এটি অন্য সকলের থেকে পরিষ্কার। সরলতার বিষয়।
ওভারকোডার

32

না, তবে ব্রাউজার স্বয়ংক্রিয়-সম্পূর্ণ প্রায়শই nameপূরণ করা ক্ষেত্রগুলির মতো একই বৈশিষ্ট্যযুক্ত ক্ষেত্র দ্বারা ট্রিগার হয় । যদি আপনি কোনও র্যান্ডমাইজড ফিল্ডের নাম রাখার জন্য কোনও চতুরতার চেষ্টা করতে পারেন স্বয়ংক্রিয়ভাবে সম্পূর্ণরূপে ক্ষেত্রের জন্য পূর্বে প্রবেশ করা মানগুলি টানতে সক্ষম হবে না।

যদি আপনি কোনও ইনপুট ফিল্ডটিকে " email_<?= randomNumber() ?>" এর মতো একটি নাম দিতে থাকেন এবং তারপরে স্ক্রিপ্টটি এই পোষ্ট বা জিইটি ভেরিয়েবলের মাধ্যমে প্যাটার্নের সাথে মিলে যায় এমন কোনও কিছু অনুসন্ধান করে " email_[some number]" এই ডেটা লুপটি পেয়ে থাকে তবে আপনি এটি টেনে নিতে পারেন, এবং এটিতে ( কার্যত) ব্রাউজার নির্বিশেষে সাফল্যের গ্যারান্টিযুক্ত ।


6
এটি স্বয়ংক্রিয় পরীক্ষাকে শক্ত করে তুলবে।
ডেভিড ওয়াটারস

14
স্বয়ংক্রিয় পরীক্ষা আরও শক্ত করে তুলবে, কেবলমাত্র যদি আপনার টেস্টিং সফ্টওয়্যারটি তাদের সাথে এলোমেলো সংখ্যার সংযুক্ত থাকতে পারে / পড়ার ক্ষেত্রগুলি পরীক্ষা করতে পারে না। আপনার স্বয়ংক্রিয় পরীক্ষামূলক সফ্টওয়্যার আপগ্রেড করার সময় হতে পারে time
corydoras

8
স্বয়ংক্রিয়ভাবে সম্পূর্ণ তথ্য ব্রাউজারের ডেটা ডিরেক্টরিতে সংরক্ষণ করা হবে, তাই না?
জোয়ে অ্যাডামস

2
সম্ভবত। তবে এটি ব্যবহারকারীর কাছে আবার বাস্তবে উপস্থিত হবে বলে আশা করা যায় না।
ফ্যান্টম ওয়াটসন

1
ক্রোম এখন নির্দিষ্ট সাইটের জন্য নাম অ্যাট্রিবিউটের পরিবর্তে টাইপ = "পাসওয়ার্ড" অ্যাট্রিবিউট ব্যবহার করে। আমার নাম = "নতুন পাসওয়ার্ড" স্বতঃপূরণ = 'অফ' টাইপ = "পাসওয়ার্ড" রয়েছে এবং এটি স্বতঃপূর্ণ হয়ে যায়! আমি যদি টাইপটি পরিবর্তন করি তবে কোনও অটোফিল নেই
এনিগমা প্লাস


23

এটি জাভাস্ক্রিপ্ট দিয়ে কীভাবে সেট করবেন?

var e = document.getElementById('cardNumber');
e.autocomplete = 'off'; // Maybe should be false

এটি নিখুঁত নয়, তবে আপনার এইচটিএমএলটি বৈধ হবে।


8
জাভাস্ক্রিপ্টকে বৈধতা সংক্রান্ত ত্রুটিগুলি হিসাবে কাজের হিসাবে ব্যবহার করা রাগের নীচে ধুলাবালি করার মতো। এইচটিএমএল ডকুমেন্টটি বৈধ হয়ে উঠতে পারে, ফলস্বরূপ এইচটিএমএল + জেএস পৃষ্ঠাটি হবে না।
fregante


11

আপনি যদি jQuery ব্যবহার করেন তবে আপনি এর মতো কিছু করতে পারেন:

$(document).ready(function(){$("input.autocompleteOff").attr("autocomplete","off");});

এবং যেখানে আপনি চান স্বতঃসম্পূর্ণ অফ ক্লাসটি ব্যবহার করুন:

<input type="text" name="fieldName" id="fieldId" class="firstCSSClass otherCSSClass autocompleteOff" />

আপনি যদি নিজের সমস্ত ইনপুট চান তবে আপনি autocomplete=offকেবল এটি ব্যবহার করতে পারেন:

$(document).ready(function(){$("input").attr("autocomplete","off");});

4
এইচটিএমএল 5 ডক্টাইপ ব্যবহার করা সহজ এবং আরও ভাল।
বালাসসি

5
এটি যাইহোক সত্যই এইচটিএমএল নয়, এটি কেবলমাত্র (অবৈধ) autocompleteবৈশিষ্ট্যটি এইচটিএমএল
ম্যাট বি

এই কোডটি আমার পক্ষে কাজ করে না; আমি ব্যবহার করেছি $('input.autocompleteOff').val('');যা ঠিক আছে বলে মনে হচ্ছে।
dqd

5
জাভাস্ক্রিপ্টকে বৈধতা সংক্রান্ত ত্রুটিগুলি হিসাবে কাজের হিসাবে ব্যবহার করা রাগের নীচে ধুলাবালি করার মতো। এইচটিএমএল ডকুমেন্টটি বৈধ হয়ে উঠতে পারে, ফলস্বরূপ এইচটিএমএল + জেএস পৃষ্ঠাটি হবে না।
fregante

8

আরেকটি উপায় - যা সুরক্ষার ক্ষেত্রেও সহায়তা করবে তা হ'ল ইনপুট বাক্সটি প্রতিবার প্রদর্শিত হওয়ার পরে কিছু আলাদাভাবে কল করা: ঠিক যেমন ক্যাপ্টা। এইভাবে, সেশনটি কেবলমাত্র এককালীন ইনপুট পড়তে পারে এবং অটো-কমপ্লিটটি আর কিছুই করতে পারে না।

আপনার ব্রাউজার অভিজ্ঞতায় হস্তক্ষেপ করা উচিত কিনা সে সম্পর্কে রমেডোরের প্রশ্ন সম্পর্কিত একটি বিষয়: আমরা যোগাযোগ পরিচালনা ও সিআরএম সিস্টেম বিকাশ করি এবং আপনি যখন অন্য ব্যক্তির ডেটা কোনও ফর্মে টাইপ করেন তখন আপনি এটি চান না যে এটি আপনার নিজের বিবরণকে ক্রমাগত পরামর্শ দেয়।

এটি আমাদের প্রয়োজনের জন্য কাজ করে, তবে তারপরে ব্যবহারকারীদের একটি শালীন ব্রাউজার পেতে বলার বিলাসিতা থাকে :)

autocomplete='off' 

8

autocomplete="off" এটি সমস্ত আধুনিক ব্রাউজারগুলির জন্য সমস্যার সমাধান করা উচিত।

<form name="form1" id="form1" method="post" autocomplete="off"
   action="http://www.example.com/form.cgi">
  [...]
</form>

গেকো ব্রাউজারগুলির বর্তমান সংস্করণগুলিতে, স্ব-পরিপূর্ণ বৈশিষ্ট্য পুরোপুরি কার্যকর হয়। পূর্ববর্তী সংস্করণগুলির জন্য, নেটস্কেপ 6.2 এ ফিরে গিয়ে, এটি "ঠিকানা" এবং "নাম" সহ ফর্মগুলির ব্যতিক্রম নিয়ে কাজ করেছিল

হালনাগাদ

কিছু ক্ষেত্রে, স্বয়ংক্রিয়রূপে অ্যাট্রিবিউটটি সেট করা থাকলেও ব্রাউজারটি স্ব-সমাপ্তির মানগুলির পরামর্শ দিবে। এই অপ্রত্যাশিত আচরণটি বিকাশকারীদের জন্য বেশ বিস্ময়কর হতে পারে। সত্যিই নো-অটোমোপ্লেশনকে বাধ্য করার কৌশলটি বৈশিষ্ট্যের জন্য একটি এলোমেলো স্ট্রিং নির্ধারণ করা হয় , উদাহরণস্বরূপ:

autocomplete="nope"

যেহেতু এই এলোমেলো মানটি একটি নয় valid one, তাই ব্রাউজারটি ছেড়ে দেবে।

Documetation


আধুনিক ব্রাউজারগুলি স্বতঃপূরণকে সম্মান করে না = পছন্দ করে বন্ধ। : / দুর্ভাগ্যক্রমে
আলেকাস

@ অ্যালেক্সাস কিছু আপডেট যুক্ত করেছে ... ইন্টারনেট পরিবর্তন খুব দ্রুত
এমিলিও গোর্ট

6

একটি এলোমেলো 'নাম' বৈশিষ্ট্যটি ব্যবহার করা আমার পক্ষে কাজ করে।

ফর্মটি প্রেরণ করার সময় আমি নামটির বৈশিষ্ট্যটি পুনরায় সেট করি যাতে আপনি ফর্মটি প্রেরিত হওয়ার পরেও নাম দিয়ে এটি অ্যাক্সেস করতে পারেন। (নাম সংরক্ষণের জন্য আইডি বৈশিষ্ট্যটি ব্যবহার করে)


5

মনে রাখবেন যে স্বতঃসম্পূর্ণ বৈশিষ্ট্যের অবস্থান সম্পর্কে কিছু বিভ্রান্তি রয়েছে। এটি পুরো ফরমে ট্যাগে বা পৃথক ইনপুট ট্যাগগুলিতে প্রয়োগ করা যেতে পারে এবং এইচটিএমএল 5 এর আগে এটি সত্যিই মানক করা হয়নি (এটি উভয় অবস্থানের স্পষ্টতই অনুমতি দেয় )। পুরানো ডক্সগুলি উল্লেখযোগ্যভাবে এই মজিলা নিবন্ধটিতে কেবল ফরএম ট্যাগের উল্লেখ রয়েছে। একই সময়ে কিছু নিরাপত্তা স্ক্যানার শুধুমাত্র ইনপুট ট্যাগে স্বয়ংসম্পূর্ণ জন্য চেহারা এবং এটি যদি অনুপস্থিত অভিযোগ (এমনকি যদি এটা হবে হয় পিতা বা মাতা আকারে)। এই গণ্ডগোলের আরও বিশদ বিশ্লেষণ এখানে পোস্ট করা হয়েছে: এইচটিএমএল ফর্মগুলিতে AUTOCOMPLETE = অফ বৈশিষ্ট্যগুলি নিয়ে বিভ্রান্তি


3

আদর্শ নয়, তবে প্রতিবার আপনি যখনই রেন্ডার করবেন তখন আপনি আইডি এবং নামটি পরিবর্তন করতে পারেন - আপনাকে এটি সার্ভারের পাশ দিয়েও ট্র্যাক করতে হবে যাতে আপনি তথ্য বের করতে পারেন।

এটি কার্যকর হবে কিনা তা নিশ্চিত নয়, এটি ছিল কেবল একটি চিন্তাভাবনা।


2

আমি মনে করি একটি সহজ উপায় আছে। এলোমেলো নামের (জাভাস্ক্রিপ্টের মাধ্যমে) একটি লুকানো ইনপুট তৈরি করুন এবং এতে ব্যবহারকারীর নাম সেট করুন। পাসওয়ার্ড দিয়ে পুনরাবৃত্তি করুন। এইভাবে আপনার ব্যাকএন্ড স্ক্রিপ্টটি জানে যে যথাযথ ক্ষেত্রের নামটি কী, অন্ধকারে স্বয়ংসম্পূর্ণ রেখে।

আমি সম্ভবত ভুল, কিন্তু এটি একটি ধারণা মাত্র।


2
if (document.getElementsByTagName) {
    var inputElements = document.getElementsByTagName("input");
    for (i=0; inputElements[i]; i++) {
        if (inputElements[i].className && (inputElements[i].className.indexOf("disableAutoComplete") != -1)) {
            inputElements[i].setAttribute("autocomplete","off");
        }
    }
}

-1

এই সমাধানটি আমার সাথে কাজ করে:

$('form,input,select,textarea').attr("autocomplete", "nope");

আপনি যদি এই অঞ্চলে অটোফিল ব্যবহার করতে চান তবে autocomplete="false"এলিমেন্টে যোগ করুন :

<input id="search" name="search" type="text" placeholder="Name or Code" autcomplete="false">

-5

বৈধ স্বয়ংসম্পূর্ণ বন্ধ

<script type="text/javascript">
    /* <![CDATA[ */
    document.write('<input type="text" id="cardNumber" name="cardNumber" autocom'+'plete="off"/>');
    /* ]]> */ 
</script>

13
অবশ্যই যদি কোনও ব্যবহারকারীর জেএস চালু করা থাকে তবে তারা তাদের কার্ড নম্বর প্রবেশ করতে না পারায় তারা কোনও অর্ডার সম্পূর্ণ করতে পারবেন না? উন্নত বৈশিষ্ট্য সম্পূরক মাধ্যমে জাতীয় আমি বলতে চাই - সবচেয়ে খারাপ ক্ষেত্রে, জাতীয় বন্ধ স্বয়ং-সম্পূর্ণ জন্য সম্ভাব্য সঙ্গে কার্ড নম্বর ক্ষেত্র দেয়, কিন্তু অন্তত তারা একটা অর্ডার করতে পারেন ... শুধু একটি চিন্তা :)
Terry_Brown

3
এটি এমনকি মজার নয়।
রিকার্ডো পাইপার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.