সিএসএসের মাধ্যমে স্বতঃপূরণ অক্ষম করুন


94

কোনও ফর্ম উপাদান (বিশেষত একটি পাঠ্যক্ষেত্র) -এ স্বতঃপূরণ অক্ষম করতে CSS ব্যবহার করা কি সম্ভব?

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

উত্তর:


52

আপনি একটি উত্পন্ন idএবং ব্যবহার করতে পারেনname প্রতিবার যা ভিন্ন is তাই ব্রাউজারটি এই পাঠ্য ক্ষেত্রটিকে মনে রাখতে পারে না এবং কিছু মান প্রস্তাব করতে ব্যর্থ হয়।

এটি অন্তত ক্রস ব্রাউজার নিরাপদ বিকল্প, তবে আমি রবার্টসনএম ( autocomplete="off") এর উত্তরটি দিয়ে যাওয়ার পরামর্শ দেব ।


4
এর একটি পার্শ্ব প্রতিক্রিয়া হ'ল, ব্রাউজারের ইতিহাস অনেকগুলি বিভিন্ন (এলোমেলো) ফর্ম ক্ষেত্রগুলির সাথে বিশৃঙ্খল হয়ে যায়। স্থানীয় ডেটাবে ব্রাউজারগুলিতে পরিচিত মানগুলির জন্য প্রতিটি অনুসন্ধানে কিছুটা সময় লাগবে।
dermatthias

4
দুর্দান্ত ধারণা, তবে এটি ক্রেডিট কার্ড নম্বরগুলি এনক্রিপ্ট করা স্বতঃপূরণ ডাটাবেসে সংরক্ষণ থেকে বাধা দেয় না।
হ্যান্স-পিটার স্টার

আপনি যদি স্ট্যাটিক কন্ট্রোল নাম / আইডি ব্যবহার না করেন তবে যে কোনও স্ক্রিপ্টিং নষ্ট হয়ে যাবে এবং যে কোনও ফর্ম ডেটা সংগ্রহটিও ভেঙে যাবে (যদি না আপনার আবেদনের প্রতিটি দিকই নতুন নামকরণ কনভেনশন সম্পর্কে অবগত থাকে এবং কোনও স্ক্রিপ্টিং / ডেটা সংগ্রহও গতিশীলভাবে আপডেট না করে) )।
গ্যারি রিখটার

আমি আপনাকে স্বতঃপূরণ এড়াতে হবে, ক্ষেত্রের নামগুলি "এলোমেলোকরণ" একমাত্র আসল উপায়। autocomplete="off"ব্রাউজার এক্স সংস্করণে (বর্তমান + 1) এর মতো কোনও ইঙ্গিত ব্যবহার করা উপেক্ষা করা হচ্ছে। (উদাহরণস্বরূপ, সর্বশেষ গুগল ক্রোম স্বয়ংসম্পূর্ণ = উপেক্ষা করুন))
মিক্কো রেন্টালাইনেন

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

129

যেমনটি দাঁড়িয়েছে, সিএসএসে কোনও 'স্বতঃসম্পূর্ণ বন্ধ' বৈশিষ্ট্য নেই। তবে এইচটিএমএল এর জন্য একটি সহজ কোড রয়েছে:

<input type="text" id="foo" value="bar" autocomplete="off" />

আপনি যদি কোনও সাইট-প্রশস্ত ইফেক্টর সন্ধান করছেন, তবে সহজেই সমস্ত 'ইনপুট'-এর মাধ্যমে চালানো এবং এই ট্যাগটি যুক্ত করতে, বা সংশ্লিষ্ট সিএসএস শ্রেণি / আইডি সন্ধানের জন্য একটি সহজ জেএস ফাংশন।

স্বয়ংসম্পূর্ণ বৈশিষ্ট্যটি ক্রোম এবং ফায়ারফক্স (!) এ সূক্ষ্মভাবে কাজ করে, তবে আরও দেখুন যে কোনও এইচটিএমএল আকারে স্বতঃপূরণ অক্ষম করার জন্য কি ডাব্লু 3 সি বৈধ উপায় আছে?


4
developer.mozilla.org/en-US/docs/Web/Security/... প্রস্তাব দেওয়া autocomplete="anyrandominvalidvalue"হবে হবে।
অ্যান্ড্রু স্ট্যালকার

49

আপনি jQuery দ্বারা সহজেই প্রয়োগ করতে পারেন

$('input').attr('autocomplete','off');

4
বেশিরভাগ ক্ষেত্রে, $ ('ফর্ম')। অনেক বেশি দক্ষ (নীচের উত্তরে মন্তব্য দেখুন)
ইরাকলি

@ ইরাকলি আমার ক্ষেত্রে, formকেবলমাত্র কাজটিই কাজ করে। না input। ধন্যবাদ
খভেরিম

4
হাই, 2018 এবং এই দিনগুলিতে আমি এটির কাজটি করার একমাত্র উপায়। এছাড়াও, @ ইরাকলি এটি সত্য যদি আপনার একটি পূর্ণরূপে আমাদের নির্বাচক হিসাবে ফর্ম ব্যবহার করতে হয়।
ডেভন কিস

15

আপনি যদি একটি ব্যবহার করে থাকেন তবে আপনি formসমস্ত স্বয়ংক্রিয় পূর্ণাঙ্গগুলি অক্ষম করতে পারবেন,

<form id="Form1" runat="server" autocomplete="off">

প্রকৃতপক্ষে, মজিলার প্রতি: "যদি কোনও ইনপুট উপাদানটিতে স্বতঃপূরণ বৈশিষ্ট্যটি নির্দিষ্ট না করা থাকে তবে ব্রাউজারটি <ইনপুট> উপাদানটির ফর্মের মালিকের স্বতঃপূত বৈশিষ্ট্য মান ব্যবহার করে The ফর্মের মালিক হয় হয় এই <ইনপুট> উপাদানটি ফর্ম উপাদান হিসাবে এর বংশধর বা ফর্ম এলিমেন্ট যার আইডি ইনপুট উপাদানটির ফর্ম বিশিষ্টতা দ্বারা নির্দিষ্ট করা হয়েছে more এটিকে বিবেচনা করে উপরের চিত্রের চেয়ে আরও কার্যকর জিকুয়ের বিকল্পটি হ'ল: $ ('ফর্ম')। অ্যাটর ('স্বতঃপূত', 'অফ');
ইরাকলি

13

সিএসএসের এই ক্ষমতা নেই। আপনার ক্লায়েন্ট-সাইড স্ক্রিপ্টিং ব্যবহার করতে হবে।


4
কোন ধারনা কীভাবে এটিকে অক্ষম করবেন? আমরা কী তা করি তা আমরা দেখতে পাই না।
বেনিয়ামিন গ্রুইনবাউম

এজেন্টে autocomplete="false"কাজ করবেন প্রযুক্তিগতভাবে কোনও অবৈধ মান এখানে "মিথ্যা" এর জায়গায় যেতে পারে।
অ্যান্ড্রু

4

আমি এই প্রশ্নের উত্তর এবং ওয়েবে অন্যান্য নিবন্ধগুলি থেকে সমস্ত প্রস্তাবিত উপায় চেষ্টা করেছি তবে যাইহোক কাজ করছে না। নীচে হিসাবে ক্লায়েন্ট-সাইড স্ক্রিপ্ট ব্যবহার করে aut (ডকুমেন্ট) এর বাইরে ready (নথি) এর বাইরে (যেমন) উল্লিখিত ব্যবহারকারীর হিসাবে: আমি ফর্ম উপাদানটিতে স্বতঃসম্পূর্ণ = "নতুন-র্যান্ডম-মান", স্বতঃপূরণ = "বন্ধ" চেষ্টা করেছি mentioned

$(':input').on('focus', function () {
  $(this).attr('autocomplete', 'off')
});

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

এই কারণে, অনেক আধুনিক ব্রাউজারগুলি লগইন ক্ষেত্রগুলির জন্য স্বতঃপূরণ = "বন্ধ" সমর্থন করে না:

যদি কোনও সাইট একটি এর জন্য স্বতঃপূরণ = "বন্ধ" সেট করে, এবং ফর্মটিতে ব্যবহারকারীর নাম এবং পাসওয়ার্ড ইনপুট ক্ষেত্র অন্তর্ভুক্ত থাকে, তবে ব্রাউজারটি এখনও এই লগইনটি মনে রাখার প্রস্তাব দিবে, এবং যদি ব্যবহারকারী রাজি হন, ব্রাউজারটি পরবর্তী সময় ব্যবহারকারীর জন্য সেই ক্ষেত্রগুলি স্বয়ংক্রিয়ভাবে পূরণ করবে পৃষ্ঠাটি পরিদর্শন করে। যদি কোনও সাইট ব্যবহারকারীর নাম এবং পাসওয়ার্ড ক্ষেত্রগুলির জন্য স্বতঃপূরণ = "বন্ধ" সেট করে, তবে ব্রাউজারটি এখনও এই লগইনটি মনে রাখার প্রস্তাব দিবে, এবং যদি ব্যবহারকারী সম্মত হন, ব্যবহারকারী পরের বার পৃষ্ঠাটি দেখার জন্য ব্রাউজার সেই ক্ষেত্রগুলি স্বতঃপূর্ণ করে তুলবে। ফায়ারফক্স (সংস্করণ 38 হ'ল), গুগল ক্রোম (34 সাল থেকে) এবং ইন্টারনেট এক্সপ্লোরার (সংস্করণ 11 এর পরে) এ এটি ব্যবহার।

আপনি যদি কোনও ব্যবহারকারী পরিচালন পৃষ্ঠাটি সংজ্ঞায়িত করছেন যেখানে কোনও ব্যবহারকারী অন্য ব্যক্তির জন্য একটি নতুন পাসওয়ার্ড নির্দিষ্ট করতে পারে এবং তাই আপনি পাসওয়ার্ডের ক্ষেত্রগুলিতে স্বয়ংক্রিয়ভাবে ভরাট প্রতিরোধ করতে চান, আপনি স্বতঃপূরণ = "নতুন-পাসওয়ার্ড" ব্যবহার করতে পারেন ; তবে ফায়ারফক্সে এই মানটির জন্য সমর্থন কার্যকর করা হয়নি।

এটা ঠিক কাজ হয়েছে। আমি ক্রোমটিতে বিশেষভাবে চেষ্টা করেছি এবং আমি আশা করি এটি কাজ করে চালিয়ে যাবে এবং অন্যদের সহায়তা করবে।


1

আমি সমস্ত ইনপুটগুলির জন্য একটি নকল স্ব-পরিপূর্ণ নাম যুক্ত করে সমস্যার সমাধান করেছি।

$("input").attr("autocomplete", "fake-name-disable-autofill");

1

এটির জন্য 3 টি উপায় রয়েছে, আমি তাদের আরও ভাল উপায় হওয়ার জন্য উল্লেখ করি ...

1-এইচটিএমএল উপায়:

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

2-জাভাস্ক্রিপ্ট উপায়:

document.getElementById("input-id").getAttribute("autocomplete") = "off";

3-jQuery উপায়:

$('input').attr('autocomplete','off');

0

@ অহমারের সমাধানের জন্য ধন্যবাদ আমি আমার কৌণিক + ইউআই রাউটারে একই সমস্যাটি সমাধান করতে সক্ষম হয়েছি পরিবেশে , যার আগ্রহের জন্য আমি এখানে ভাগ করব।

আমার মধ্যে index.htmlআমি নিম্নলিখিত স্ক্রিপ্টটি যুক্ত করেছি:

<script type="text/javascript">
    setTimeout(function() {
        $('input').attr('autocomplete', 'off');
    }, 2000);
</script>

তারপরে রাষ্ট্রের পরিবর্তনগুলি কভার করতে, আমি আমার মূল নিয়ামকটিতে নিম্নলিখিতগুলি যুক্ত করেছি:

$rootScope.$on('$stateChangeStart', function() {
                $timeout(function () {
                    $('input').attr('autocomplete', 'off');
                }, 2000);
            });

সময়সীমা html jquery প্রয়োগ করার আগে রেন্ডার করার জন্য।

আপনি যদি আরও ভাল সমাধান পান তবে আমাকে জানান let


0

আপনি স্বয়ংক্রিয়ভাবে সম্পূর্ণ করতে অক্ষম করতে সিএসএস ব্যবহার করতে পারবেন না তবে আপনি এইচটিএমএল ব্যবহার করতে পারেন:

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

প্রযুক্তিগতভাবে আপনি falseকোনও অবৈধ মান দিয়ে প্রতিস্থাপন করতে পারেন এবং এটি কাজ করবে। এই আইওএসের একমাত্র সমাধান আমি খুঁজে পেয়েছি যা এজতেও কাজ করে।


0

আমি কেবল স্ব-অসম্পূর্ণতার 'new-password'পরিবর্তে ব্যবহার করি 'off'

এবং আমি এই কোডটি ব্যবহার করেও চেষ্টা করেছি (কমপক্ষে আমার শেষের দিকে), আমি আপনার তথ্যের জন্য ডাব্লুপি এবং গ্র্যাভিটিফর্ম ব্যবহার করি

$('input').attr('autocomplete','new-password');

-5
$('input').attr('autocomplete','off');

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