क्या जावास्क्रिप्ट का उपयोग करके सभी पाठ को रद्द करने का एक कार्य है?


98

क्या सभी चयनित पाठ को रद्द करने के लिए जावास्क्रिप्ट में एक फ़ंक्शन है? मुझे लगता है कि यह एक साधारण वैश्विक समारोह जैसा है document.body.deselectAll();या कुछ और है।

जवाबों:


163

इसे इस्तेमाल करे:

function clearSelection()
{
 if (window.getSelection) {window.getSelection().removeAllRanges();}
 else if (document.selection) {document.selection.empty();}
}

यह किसी भी प्रमुख ब्राउज़र में नियमित HTML सामग्री में चयन को साफ करेगा। यह पाठ इनपुट या <textarea>फ़ायरफ़ॉक्स में चयन को स्पष्ट नहीं करेगा ।


25
मैं पुष्टि कर सकता हूं कि window.getSelection().removeAllRanges();सभी वर्तमान ब्राउज़रों में काम करता है। लाइव डेमो: jsfiddle.net/hWMJT/1
asime Vidas

आपको <input id = 'लेकिन' type = 'बटन' मान = 'क्लिक' / onclick = 'clearSelection ()'>
अंकुर

1
@ @Ime - वास्तव में नहीं। यह "काम कर रहा है" क्योंकि बटन फोकस होने पर चयन खो जाता है। प्रमाण - कोड पर टिप्पणी की गई है, चयन अभी भी साफ़ है।
शैडो विजार्ड इयर फॉर यू यू

@ शेडो यहां उचित डेमो है: jsfiddle.net/9spL8/3 यह removeAllRanges()तरीका पैराग्राफ या समान गैर-फॉर्म-फील्ड तत्वों के अंदर पाठ के लिए सभी वर्तमान ब्राउज़रों में काम करता है। फॉर्म-फील्ड्स (जैसे टेक्सएरिया) के लिए, यह विधि IE9 और FF5 में काम नहीं करती है।
37इमे विद्या

1
संपादित, window.getSelection().removeAllRanges(); पहले उपयोग करें क्योंकि यह मानक-अनुरूप है, मालिकाना कोड हमेशा अंतिम निष्पादित किया जाना चाहिए । वर्ष 2004 हो या 4004 मानकों का अनुपालन कोड हमेशा वही होगा जो हम बिना किसी अपवाद के पहले इसका पता लगाते हैं!
जॉन

27

यहाँ एक संस्करण है जो किसी भी चयन को स्पष्ट करेगा, जिसमें पाठ इनपुट और टेक्स्टारस शामिल हैं:

डेमो: http://jsfiddle.net/SLQpM/23/

function clearSelection() {
    var sel;
    if ( (sel = document.selection) && sel.empty ) {
        sel.empty();
    } else {
        if (window.getSelection) {
            window.getSelection().removeAllRanges();
        }
        var activeEl = document.activeElement;
        if (activeEl) {
            var tagName = activeEl.nodeName.toLowerCase();
            if ( tagName == "textarea" ||
                    (tagName == "input" && activeEl.type == "text") ) {
                // Collapse the selection to the end
                activeEl.selectionStart = activeEl.selectionEnd;
            }
        }
    }
}

काम नहीं करता है अगर आपका चयन पहली पंक्ति से कहीं शुरू होता है और इसमें बड़ा पाठ क्षेत्र शामिल होता है
व्याचेस्लाव गेर्चिकोव

1
@VyachaslavGerchicov: यह शायद इसलिए है क्योंकि यह एक त्वरित-सरल उदाहरण है और यदि आप मुख्य के बाहर चयन समाप्त करते हैं <div>तो mouseupघटना आग नहीं लगती है। इसके बजाय माउसअप हैंडलर को दस्तावेज़ पर रखें और यह ठीक होगा: jsfiddle.net/SLQpM/23
टिम डाउन

पुराने ब्राउज़रों में यह एक बढ़िया काम-काज है जो तत्वों को घसीटते समय उपयोगकर्ता-चयन सीएसएस का समर्थन नहीं करता है। कॉल क्लीयर सेलेक्शन () माउस मूव कॉलबैक में।
जियोर्डी

6

Internet Explorer के लिए, आप document.selection ऑब्जेक्ट की खाली विधि का उपयोग कर सकते हैं :

document.selection.empty ();

क्रॉस-ब्राउज़र समाधान के लिए, यह उत्तर देखें:

फ़ायरफ़ॉक्स में चयन साफ़ करें


यदि आपकी वेबसाइट सार्वजनिक है (इंट्रानेट नहीं है जहाँ आप ब्राउज़र को नियंत्रित करते हैं) तो यह अच्छा विचार नहीं है, यह क्रॉस ब्राउज़र नहीं है।
शैडो विजार्ड ईयर फॉर यू

1
@ शादो विजार्ड - सच है, यह सवाल एक क्रॉस-ब्राउज़र समाधान के लिए प्रासंगिक हो सकता है: stackoverflow.com/questions/6186844/…
ल्यूक गिरविन

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

मेरी राय में ब्राउज़र संगतता कुछ स्पष्ट है जो हमारे द्वारा पेश की जानी चाहिए - कई डेवलपर्स को भी इस तरह के मतभेद मौजूद नहीं हैं, इसलिए जो लोग जानते हैं उन्हें बताना चाहिए। इस तरफ, मैंने कभी नहीं कहा कि आपका प्रश्न गलत है , बस गायब है
शैडो विजार्ड ईयर फॉर यू

@ ल्यूक केवल IE में document.selection.clear()काम करता है । यहां देखें: jsfiddle.net/9spL8/4 इसके अलावा, यह विधि चयनित पाठ को हटा देगी , न कि केवल इसे हटा दें । पाठ को केवल अचयनित करने के लिए, इसके बजाय उपयोग करें । document.selection.empty()
47इमे विद्या

0

एक के लिए textareaकम से कम 10 अक्षर के साथ तत्व निम्नलिखित एक छोटे से चयन कर देगा और फिर दूसरा और इसे अचयनित एक आधे के बाद:

var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;

setTimeout(function()
{
 t.selectionStart = 4;
 t.selectionEnd = 4;
},1500);

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