HTML फॉर्म में टेक्स्ट चिपकाना अक्षम करें


96

क्या HTML फ़ॉर्म पर पाठ फ़ील्ड में पाठ पेस्ट करने की क्षमता को अक्षम करने के लिए जावास्क्रिप्ट का उपयोग करने का एक तरीका है?

उदाहरण के लिए मेरे पास एक सरल पंजीकरण फॉर्म है जहां उपयोगकर्ता को दो बार अपने ईमेल को इनपुट करना आवश्यक है। दूसरी ईमेल प्रविष्टि यह सत्यापित करने के लिए है कि पहले ईमेल प्रविष्टि में कोई टाइपोस नहीं हैं। हालाँकि अगर उपयोगकर्ता अपने ईमेल को कॉपी / पेस्ट करता है तो यह उद्देश्य को हरा देता है और मुझे उपयोगकर्ताओं को समस्या हो रही है क्योंकि उन्होंने गलत ईमेल इनपुट किया है और इसे कॉपी / पेस्ट किया है।

हो सकता है कि मैं अपने प्रश्न पर स्पष्ट नहीं था, लेकिन मैं लोगों को उनके ब्राउज़र पर पाठ को कॉपी करने (या चयन को खींचने) से रोकने की कोशिश नहीं कर रहा हूं। मैं सिर्फ उन्हें उपयोगकर्ता त्रुटि को कम करने के लिए एक पाठ क्षेत्र में इनपुट चिपकाने से रोकना चाहता हूं ।

शायद इस "हैक" का उपयोग करने के बजाय आप जो यहां हल करने की कोशिश कर रहे हैं उसकी मूल समस्या का एक और समाधान सुझा सकते हैं? मैंने आधा दर्जन से कम उपयोगकर्ता परीक्षण किए हैं और यह पहले ही दो बार हो चुका है। मेरे दर्शकों के पास उच्च स्तर की कंप्यूटर प्रवीणता नहीं है।


111
लोगों को उनके पते की किताब से उनके ब्राउज़र पर उनके ईमेल पते को कॉपी / पेस्ट करने से रोकना। यह अच्छी तरह से नीचे जाना होगा।
क्वेंटिन

28
जब यह परिवर्तन को जोर दे रहा है तो बहुत कुछ नहीं कर सकता। अपने पेय का आनंद लें :)
जुलाइन

15
यह पूरी तरह से ठीक हो सकता है यदि वह सत्यापन क्षेत्र में चिपकाने में अक्षम हो जाता है जब ईमेल को मूल क्षेत्र में नहीं चिपकाया जाता है। मैं दूसरे शब्दों में, उपयोगकर्ता को ईमेल को दोनों क्षेत्रों में, या न तो क्षेत्र में पेस्ट करना होगा।
जीजे

25
यदि कोई क्लाइंट इसके लिए कहता है, तो उन्हें बताएं कि यह कितना बुरा विचार है। यह एक ग्राहक को उस बिंदु पर पेशाब करने का एक शानदार तरीका है जिस पर वे केवल दूर जाने के लिए (पंजीकरण के समय)। आप नहीं चाहते कि ग्राहक से संबंध विच्छेद हो जाए। यह प्रथा तेजी से आम हो रही है, और तेजी से आपत्तिजनक है क्योंकि अधिक लोग पासवर्ड प्रबंधकों का उपयोग करते हैं। इसे भी देखें: ux.stackexchange.com/q/21062/9529 और ob। xkcd: xkcd.com/970
मार्क बूथ

तत्व निरीक्षक के साथ इस "सुविधा" को कैसे पराजित किया जाए, यह प्रश्न करते हुए मैंने यह पाया। इसने काम कर दिया!
एसवीडी

जवाबों:


53

मुझे हाल ही में एक फार्म तत्व में चिपकाने को निष्क्रिय करना पड़ा। ऐसा करने के लिए, मैंने एक क्रॉस-ब्राउज़र * इंटरनेट एक्सप्लोरर के कार्यान्वयन (और अन्य ') ऑनस्पॉट ईवेंट हैंडलर लिखा। मेरा समाधान किसी भी तृतीय-पक्ष जावास्क्रिप्ट पुस्तकालयों से स्वतंत्र होना था।

यहाँ मैं क्या लेकर आया हूँ। यह चिपकाने को पूरी तरह से अक्षम नहीं करता है (उपयोगकर्ता एक समय में एक ही चरित्र को उदाहरण के लिए पेस्ट कर सकता है), लेकिन यह मेरी जरूरतों को पूरा करता है और कीकोड से निपटने के लिए बचा जाता है, आदि।

// Register onpaste on inputs and textareas in browsers that don't
// natively support it.
(function () {
    var onload = window.onload;

    window.onload = function () {
        if (typeof onload == "function") {
            onload.apply(this, arguments);
        }

        var fields = [];
        var inputs = document.getElementsByTagName("input");
        var textareas = document.getElementsByTagName("textarea");

        for (var i = 0; i < inputs.length; i++) {
            fields.push(inputs[i]);
        }

        for (var i = 0; i < textareas.length; i++) {
            fields.push(textareas[i]);
        }

        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];

            if (typeof field.onpaste != "function" && !!field.getAttribute("onpaste")) {
                field.onpaste = eval("(function () { " + field.getAttribute("onpaste") + " })");
            }

            if (typeof field.onpaste == "function") {
                var oninput = field.oninput;

                field.oninput = function () {
                    if (typeof oninput == "function") {
                        oninput.apply(this, arguments);
                    }

                    if (typeof this.previousValue == "undefined") {
                        this.previousValue = this.value;
                    }

                    var pasted = (Math.abs(this.previousValue.length - this.value.length) > 1 && this.value != "");

                    if (pasted && !this.onpaste.apply(this, arguments)) {
                        this.value = this.previousValue;
                    }

                    this.previousValue = this.value;
                };

                if (field.addEventListener) {
                    field.addEventListener("input", field.oninput, false);
                } else if (field.attachEvent) {
                    field.attachEvent("oninput", field.oninput);
                }
            }
        }
    }
})();

चिपकाने को अक्षम करने के लिए इसका उपयोग करने के लिए:

<input type="text" onpaste="return false;" />

* मुझे पता है कि oninput W3C DOM कल्पना का हिस्सा नहीं है, लेकिन मैंने जिन सभी ब्राउज़रों के साथ इस कोड का परीक्षण किया है- Chrome 2, Safari 4, Firefox 3, Opera 10, IE6, IE7-oninput या onpaste। इन सभी ब्राउज़रों में से, ओपेरा केवल ऑन्पेस्ट का समर्थन नहीं करता है, लेकिन यह ऑनिनपुट का समर्थन करता है।

नोट: यह एक कंसोल या अन्य सिस्टम पर काम नहीं करेगा जो ऑन-स्क्रीन कीबोर्ड का उपयोग करता है (यह मानते हुए कि ऑन-स्क्रीन कीबोर्ड ब्राउज़र की चाबियाँ नहीं भेजता है जब प्रत्येक कुंजी का चयन किया जाता है)। यदि यह संभव है कि आपका पृष्ठ / ऐप ऑन-स्क्रीन कीबोर्ड और ओपेरा (जैसे: Nintendo Wii, कुछ मोबाइल फोन) के साथ किसी द्वारा उपयोग किया जा सकता है, तो इस स्क्रिप्ट का उपयोग न करें जब तक कि आपने ऑन-स्क्रीन कीबोर्ड सुनिश्चित करने के लिए परीक्षण नहीं किया हो प्रत्येक कुंजी चयन के बाद ब्राउज़र को चाबियाँ भेजता है।


58
इस बेवकूफ नियम को मानने के लिए फ़ायरफ़ॉक्स को रोकने के लिए, इसके बारे में जाने: config और change dom.event.clipboardevents.enabled to false
lolesque

1
यहां तक ​​कि अगर मैं आपके द्वारा लिखे गए जेएस को शामिल नहीं कर रहा हूं, तो मैं उपयोगकर्ता को केवल कुछ भी चिपकाने से रोकने में सक्षम हूं onpaste="return false", क्या कोई मुद्दा है अगर मैं उस दृष्टिकोण के साथ जाता हूं
viveksinghggits

@viveksinghggits कोड onpasteउन ब्राउज़रों में लागू होता है जो पहले से उपलब्ध नहीं कराते हैं। आप कहते हैं " मैं कुछ भी चिपकाने से उपयोगकर्ता को रोकने में सक्षम हूं " लेकिन आपने किन ब्राउज़रों में यह परीक्षण किया?
अन्ननफे

कार्यान्वयन के संबंध में मुझे दो स्पष्ट सुधार दिखाई देते हैं: 1) केवल उन ब्राउज़रों में कोड चलाएं जहां यह पहले से समर्थित नहीं है, 2) DOM के संशोधित होने पर पुन: निष्पादित करें - वर्तमान में इसे गतिशील रूप से जोड़े गए इनपुट पर लागू नहीं किया जाएगा।
अन्नानफे

@ क्लिक करें, तो आप टेक्स्टारिस के साथ ठीक हैं जहां उपयोगकर्ता इसमें कुछ भी पेस्ट कर सकते हैं? Becuz वे उम्मीद करेंगे कि यह अन्य स्क्रीन में ठीक वैसा ही दिखाई दे, जहां चिपकाया गया डेटा प्रदर्शित होता है और वे यह अपेक्षा करेंगे कि जब डेटा किसी ईमेल में डाला जाए, तो वह ठीक वैसा ही दिखे। मेरे लिए, मैं नहीं चाहता कि फोन कॉल और समर्थन ईमेल जो उस के साथ आएंगे। किसी विशेष क्षेत्र में चिपकाने को अक्षम करने के लिए एक व्यवहार्य विकल्प और प्रश्न है, IMHO। हम में से अधिकांश समस्या यह है कि जब हम "रिच टेक्स्ट एडिटर्स" का उपयोग करते हैं - उन चीजों को ओवरराइड करने से रोकने के लिए जो कुछ भी जावास्क्रिप्ट या jquery कमांड मौजूद हैं उन्हें ओवरराइड करने लगता है।
मैकॉले

144

यह मत करो। उपयोगकर्ता के ब्राउज़र के साथ गड़बड़ न करें। ई-मेल पुष्टिकरण क्षेत्र में कॉपी + पेस्ट करने से, उपयोगकर्ता जो टाइप करते हैं, उस पर जिम्मेदारी स्वीकार करते हैं। यदि वे एक दोषपूर्ण पते को कॉपी + पेस्ट करने के लिए पर्याप्त गूंगे हैं (यह मेरे साथ हुआ है) तो यह उनका अपना दोष है।

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

इससे भी बेहतर, यदि आप कर सकते हैं, तो उपयोगकर्ता को पुष्टि किए बिना किसी प्रकार की सीमित पहुंच प्रदान करें। इस तरह, वे सीधे लॉग इन कर सकते हैं और आप आगंतुक के संपर्क में रहने के अवसरों को सुधार सकते हैं, भले ही पुष्टि मेल अन्य कारणों (जैसे स्पैम फ़िल्टर) के कारण अवरुद्ध हो।


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

12
सामान्य मामला भी है जहां इस प्रश्न को देखने वाले डेवलपर के पास उस परियोजना की आवश्यकताओं पर बहुत कम या कोई नियंत्रण नहीं है जिस पर वे काम कर रहे हैं। यह यहाँ पूछे जा रहे सवाल का जवाब नहीं है, इसलिए -1।
निक

4
यह मत कहो कि यह सवाल का जवाब नहीं है। मुझे वर्तमान में एक आवश्यकता है जहां पेस्ट को अक्षम करना है।
डारियन एवरेट

13
अगर आपको कभी इस तरह की आवश्यकता दी जाती है, तो यह एक पेशेवर के रूप में आपका काम है ताकि आप उस पर वापस आ सकें। आप एक हाथ से अधिक हैं जो कोड लिख सकते हैं।
डेन पेंट्री

2
लेकिन लगभग किसी भी चीज के वैध कारण हैं और किसी के सवाल का जवाब नहीं देना क्योंकि आपको नहीं लगता कि उनका वैध कारण परेशान है। मान लीजिए कि आपके पास एक प्रश्नोत्तरी है जिसे आप जटिल उत्तरों के साथ लागू करने का प्रयास कर रहे हैं। पेस्ट को अक्षम करने और छात्र को कॉपी पेस्ट करने के बजाय पूरे उत्तर को टाइप करने के लिए मजबूर करना उन्हें स्मृति का जवाब देने के लिए बाध्य करेगा जबकि सिर्फ एक कॉपी पेस्ट शायद बेकार होगा। ऐसा करने का एक वैध कारण है। किसी को चेतावनी दें कि वे जो करने की कोशिश कर रहे हैं, वह ज्यादातर मामलों में एक अच्छा विचार नहीं है, लेकिन एक उत्तर दें ... या यह सिर्फ परेशान करने के लिए सबसे अच्छा है।
हॉफटूट

69

आप जिन इनपुट कॉपी पेस्ट की कार्यक्षमता को निष्क्रिय करना चाहते हैं, उन पर 'डिसिपोक्स्टाइपस्ट' की एक क्लास जोड़ें और इस jQuery स्क्रिप्ट को जोड़ें

  $(document).ready(function () {
    $('input.disablecopypaste').bind('copy paste', function (e) {
       e.preventDefault();
    });
  });

1
मेरे लिए ठीक काम करता है, टैंक!
गेब्रियल ग्लॉबर

26

बस यह मिला है, हम इसका उपयोग करके प्राप्त कर सकते हैं onpaste:"return false", इसके लिए धन्यवाद: http://sumtips.com/2011/11/prevent-copy-cut-paste-text-field.html

हमारे पास नीचे सूचीबद्ध विभिन्न अन्य विकल्प उपलब्ध हैं।

<input type="text" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off/><br>

16

आप कर सकते हैं ..... लेकिन नहीं।

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

बस इन विशेषताओं को टेक्स्टबॉक्स में जोड़ें

ondragstart=”return false onselectstart=”return false

6
सवाल चिपकाने को अक्षम करने के बारे में है। यह तकनीक केवल नकल करना मुश्किल बना देगी और बिल्कुल भी चिपकाने पर असर नहीं डालेगी।
बेंडमैन

10

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

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


हा, यह एक साफ सुथरा विचार है।
justinl

7

उस ईमेल पते पर एक पुष्टिकरण ईमेल भेजने के बारे में जो उपयोगकर्ता ने सिर्फ दो बार दर्ज किया है जिसमें आपकी साइट पर एक पुष्टिकरण URL का लिंक है, तो आप जानते हैं कि उन्हें संदेश मिल गया है?

कोई भी जो ईमेल की प्राप्ति की पुष्टि करने के लिए क्लिक नहीं करता है, उसने गलत तरीके से अपना ईमेल पता दर्ज किया होगा।

एक सही समाधान नहीं है, लेकिन सिर्फ कुछ विचार हैं।


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

Tnen शायद कुछ वर्कफ़्लो / कोड जोड़ सकता है जो हर रोज़ उन उपयोगकर्ता नामों की सफाई करता है जिनकी पुष्टि 2 दिनों के लिए नहीं की गई है।
कॉलिन

1
टिप्पणी के लिए धन्यवाद। मेरा विचार यह होगा कि यदि आपने एक वेबसाइट पर एक खाता बनाने की कोशिश की और यह कहा कि आपका उपयोगकर्ता नाम लिया गया है, तो क्या आप 2 दिनों में फिर से जाएंगे और फिर से प्रयास करेंगे? मेरे विचार सबसे अधिक संभावना नहीं हैं। या तो आपने उसी दिन एक अलग उपयोगकर्ता नाम के साथ एक नया खाता बनाया है या आपने साइट पर वापस आने की जहमत नहीं उठाई है क्योंकि आप यह पता नहीं लगा सकते हैं कि पंजीकरण कैसे करना है और साइट "बहुत जटिल" थी।
justinl

8
कॉलिन क्या कह रहा है इसे जारी रखने के लिए, आप संभवतः यह मान सकते हैं कि जब कोई एक ही उपयोगकर्ता नाम और एक अलग ईमेल पते के साथ फिर से पंजीकरण करने की कोशिश कर रहा है और उन्होंने पुष्टिकरण संदेश का जवाब नहीं दिया है तो उन्हें ऐसा करने देना शायद ठीक है। आप पा सकते हैं कि लोग अपने ईमेल में अपना डोमेन सही करवाते हैं, लेकिन अपने उपयोगकर्ता नाम को गलत करते हैं और इसका उपयोग यह निर्धारित करने के लिए कर सकते हैं कि किसी ने गलती की है?
रिचर्ड लुकास

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

7

आप jquery का उपयोग कर सकते हैं

HTML फ़ाइल

<input id="email" name="email">

jquery कोड

$('#email').bind('copy paste', function (e) {
        e.preventDefault();
    });

6

@Boycs उत्तर का विस्तार करते हुए , मैं भी "चालू" का उपयोग करने की सलाह दूंगा।

$('body').on('copy paste', 'input', function (e) { e.preventDefault(); });

यदि आप स्क्रिप्ट को गतिशील रूप से जोड़े गए तत्वों को लागू करने की योजना बनाते हैं तो यह विधि उपयोगी है।
मैथ्यू

3

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

document.querySelector('input.email-confirm').onpaste = function(e) {
    alert('Are you sure the email you\'ve entered is correct?');
}

इस तरह आप पेस्ट को अक्षम नहीं करते हैं, आप सिर्फ उन्हें यह जांचने के लिए एक अनुकूल अनुस्मारक देते हैं कि उन्होंने पहले क्षेत्र में क्या लिखा है और फिर दूसरे क्षेत्र में पेस्ट किया गया है।

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

<input type="email" name="email" required autocomplete="email">

2

आप एक "कीडाउन" श्रोता को यह जानने के लिए इनपुट बॉक्स में संलग्न कर सकते हैं कि क्या Ctrl + V कुंजी दबाए जा रहे हैं या नहीं, यदि हां, तो घटना को रोकें या इनपुट बॉक्स के मान को '' पर सेट करें।

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

न तो सिफारिश की है, हालांकि। पेस्ट डिसेबल्ड वाले फॉर्म फील्ड बेहद निराशाजनक होते हैं। मैं पहली बार अपने ईमेल को सही ढंग से टाइप करने में सक्षम हूं, इसलिए मैं इसे दूसरे बॉक्स में पेस्ट करने का अधिकार सुरक्षित रखता हूं।


Apples, Unix या ctrl-ins, और iPhones के बारे में कुछ भी सही क्लिक या नहीं?
मार्टलार्क

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

2

अपनी पंजीकरण प्रक्रिया में दूसरा चरण जोड़ें। पहले पृष्ठ को हमेशा की तरह, लेकिन पुनः लोड करने पर, दूसरा पृष्ठ प्रदर्शित करें और ईमेल को फिर से पूछें। यदि यह महत्वपूर्ण है, तो उपयोगकर्ता इसे संभाल सकता है।


1

से

कुछ उपयोगकर्ता के कार्यों को पकड़ने के लिए जावास्क्रिप्ट का उपयोग करने का सुझाव दे सकते हैं, जैसे माउस को राइट-क्लिक करना या Ctrl + C / Ctrl + V कुंजी संयोजन और फिर ऑपरेशन को रोकना। लेकिन यह स्पष्ट रूप से सबसे अच्छा या सरल समाधान नहीं है। समाधान जावास्क्रिप्ट के उपयोग से कुछ ईवेंट कैप्चरिंग के साथ इनपुट फ़ील्ड गुणों में ही एकीकृत है।

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

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

और यदि आप उस फ़ील्ड के लिए कॉपी और पेस्ट को अस्वीकार करना चाहते हैं, तो बस जावास्क्रिप्ट, कैप्चर और ऑनकैट पर कैप्चर करने वाली जावास्क्रिप्ट ईवेंट जोड़ें, और उन्हें गलत तरीके से वापस करें, जैसे:

<input type="text" oncopy="return false;" onpaste="return false;" oncut="return false;">

अगला चरण उपयोगकर्ता से इनपुट फ़ील्ड की सामग्री चयन से इनकार करने के लिए onselectstart का उपयोग कर रहा है, लेकिन चेतावनी दी जा सकती है: यह केवल इंटरनेट एक्सप्लोरर के लिए काम करता है। बाकी के सभी प्रमुख ब्राउज़रों पर महान काम करते हैं: इंटरनेट एक्सप्लोरर, मोज़िला फ़ायरफ़ॉक्स, ऐप्पल सफारी (विंडोज ओएस पर, कम से कम) और Google क्रोम।


जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
केव

याह, मैं अगली बार ध्यान
रखूंगा

1
क्यों नहीं अब "क्या बहुत अच्छी तरह से समझाया गया है" का वर्णन करके शुरू करें, कि आप कैसे उठते हैं और बेहतर प्रतिनिधि :)
केव

स्वत: पूर्ण बंद करने का प्रयास करने के लिए क्या औचित्य हो सकता है? "हम अपने उपयोगकर्ताओं से नफरत करते हैं!" ? यदि आप उपयोगकर्ता के दुश्मन बनने की कोशिश कर रहे हैं, तो वे आपसे नफरत करेंगे, जबकि वे अभी भी अंत में जीतेंगे, क्योंकि वे ब्राउज़र को नियंत्रित करते हैं।
जनवरी हर्त्सेन

1

दिए गए ईमेल के मेजबान के एमएक्स रिकॉर्ड की वैधता की जांच करें। यह @ चिह्न के दाईं ओर की त्रुटियों को समाप्त कर सकता है।

आप फॉर्म सबमिट होने के बाद सबमिट और / या सर्वर साइड से पहले AJAX कॉल कर सकते हैं।


1

Jquery का उपयोग करके, आप इसका उपयोग करके कॉपी पेस्ट और कट से बच सकते हैं

$('.textboxClass').on('copy paste cut', function(e) {
    e.preventDefault();
});

धन्यवाद। यह वास्तव में यह काम करना चाहिए था।
Juergen

1

मैं इस वेनिला JS समाधान का उपयोग करता हूं:

const element = document.getElementById('textfield')
element.addEventListener('paste', e =>  e.preventDefault())


0

UIWebView पर CSS का उपयोग करने के बारे में क्या? कुछ इस तरह

<style type="text/css">
<!—-
    * {
        -webkit-user-select: none;
    }
-->
</style>

यह भी आप CSS http://rakaz.nl/2009/09/iphone-webapps-101-getting-safari-out-of-the-way.html का उपयोग करके ब्लॉक कॉपी-पेस्ट के बारे में विस्तार से पढ़ सकते हैं


0

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

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


0

मैंने http://bookmarkchamp.com के लिए ऐसा ही कुछ किया था - जब मैं एक उपयोगकर्ता को HTML क्षेत्र में कुछ कॉपी करना चाहता था, तो मैं इसका पता लगाना चाहता था। मैं जिस कार्यान्वयन के साथ आया था, वह यह देखने के लिए कि क्या किसी समय किसी क्षेत्र में अचानक बहुत सारा पाठ था या नहीं, यह देखने के लिए लगातार क्षेत्र की जाँच करें।

दूसरे शब्दों में: यदि एक बार पहले मिल्कसेकंड में कोई पाठ नहीं था, और अब 5 से अधिक वर्ण हैं ... तो उपयोगकर्ता ने संभवतः क्षेत्र में कुछ चिपकाया है।

यदि आप बुकमार्कचैंप में इस काम को देखना चाहते हैं (आपको पंजीकृत होने की आवश्यकता है), तो URL को URL फ़ील्ड में पेस्ट करें (या किसी URL को वहां खींचें और छोड़ें)।


0

जिस तरह से मैं एक ईमेल पते की पुष्टि करने के मुद्दे को हल करूंगा वह इस प्रकार है:

  1. मुख्य प्रक्रिया से गुजरने से पहले - उपयोगकर्ता को पंजीकृत करने का कहना है - पहले उन्हें अपना ईमेल पता दर्ज करने के लिए कहें।
  2. एक अद्वितीय कोड बनाएं और उसे उस ईमेल पते पर भेजें।
  3. यदि उपयोगकर्ता ने सही ईमेल पता दर्ज किया है, तो उन्हें कोड मिलेगा।
  4. उपयोगकर्ता को अपने ईमेल पते और अपनी अन्य आवश्यक जानकारी के साथ उस कोड को दर्ज करना होगा, ताकि वे पंजीकरण पूरा कर सकें। - कृपया ध्यान दें कि यदि इस बार वे एक गलत ईमेल पता (या एक गलत कोड) दर्ज करते हैं, क्योंकि यह कोड के साथ मेल नहीं खाता है, तो पंजीकरण नहीं होगा, और उपयोगकर्ता को तुरंत सूचित किया जाएगा।
  5. यदि ईमेल पता, कोड और अन्य पंजीकरण जानकारी सही ढंग से दर्ज की गई है, तो पंजीकरण पूरा हो गया है और उपयोगकर्ता तुरंत सिस्टम का उपयोग करना शुरू कर सकता है। - अपने खाते को सक्रिय करने के लिए किसी अन्य ईमेल पते पर प्रतिक्रिया देने की आवश्यकता नहीं है

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


0

आप jQuery द्वारा कॉपी पेस्ट विकल्प को bellow स्क्रिप्ट द्वारा अक्षम कर सकते हैं। jQuery ("इनपुट")। Attr ("onpaste", "false false;");

इनपुट फ़ील्ड में bellow oppaste विशेषता का उपयोग करके ।

onpaste = "गलत लौटें;"


-1
Hope below code will work :

<!--Disable Copy And Paste-->
<script language='JavaScript1.2'>
function disableselect(e){
return false
}
function reEnable(){
return true
}
document.onselectstart=new Function ("return false")
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}
</script>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.