জাভাস্ক্রিপ্ট ব্যবহার করে সমস্ত পাঠ্য নির্বাচন থেকে মুক্ত করার জন্য কোন ফাংশন রয়েছে?


102

জাভাস্ক্রিপ্টে কোনও ফাংশন কি কেবলমাত্র সমস্ত নির্বাচিত পাঠ্যটি অনির্বাচিত করার জন্য রয়েছে? আমি অনুভব করেছি যে এটির মতো সাধারণ document.body.deselectAll();কিছু বা অন্য কিছু হয়ে উঠেছে global

উত্তর:


170

এটা চেষ্টা কর:

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

এটি কোনও বড় ব্রাউজারে নিয়মিত এইচটিএমএল বিষয়বস্তুতে একটি নির্বাচন সাফ করবে। এটি কোনও পাঠ্য ইনপুট বা <textarea>ফায়ারফক্সে কোনও নির্বাচন সাফ করবে না ।


26
আমি নিশ্চিত করতে পারি যে window.getSelection().removeAllRanges();সমস্ত বর্তমান ব্রাউজারে কাজ করে। লাইভ ডেমো: jsfiddle.net/hWMJT/1
Vidas

আপনাকে <ইনপুট আইডি = 'এর মতো একটি বাটন ক্লিক করতে হবে তবে' টাইপ = 'বোতাম' মান = 'ক্লিক করুন' / অনক্লিক = 'ক্লিয়ারসিলেশন ()'>
অঙ্কুর

4
@ Šime - সত্যই নয়। এটি "কাজ করছে" কারণ বোতামটি ফোকাস পেলে নির্বাচনটি নষ্ট হয়ে যায়। প্রুফ - কোড মন্তব্য করা হয়, নির্বাচন এখনও সাফ করা হয়।
শেডো উইজার্ড আপনার পক্ষে কান

: @Shadow এখানে সঠিক ডেমো হয় jsfiddle.net/9spL8/3removeAllRanges() পদ্ধতি অনুচ্ছেদ বা অনুরূপ অ ফর্ম-ক্ষেত্র উপাদান ভিতরে পাঠ্যের জন্য সমস্ত বর্তমান ব্রাউজারে কাজ করে। ফর্ম-ক্ষেত্রগুলির জন্য (যেমন টেক্সারিয়া) আইই 9 এবং এফএফ 5 এ এই পদ্ধতিটি কাজ করে না।
Vidime Vidas

4
সম্পাদিত, window.getSelection().removeAllRanges(); প্রথমে ব্যবহার করুন কারণ এটি মান-সম্মতিযুক্ত, স্বত্বাধিকারী কোড সর্বদা সর্বশেষে কার্যকর করা উচিত । এটি ২০০৪ সাল বা 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;
            }
        }
    }
}

আপনার নির্বাচনটি প্রথম লাইন থেকে কোথাও শুরু হয়ে কাজ করে না এবং এতে বড় পাঠ্য ক্ষেত্র অন্তর্ভুক্ত রয়েছে
ভাইচাস্লাভ গের্চিকভ

4
@ ভাইচাস্লাভ জের্চিকভ: এটি সম্ভবত কারণ এটি দ্রুত তৈরি করা সহজ উদাহরণ এবং যদি আপনি নির্বাচনের মূলের বাইরে শেষ করেন <div>তবে mouseupইভেন্টটি আগুন দেয় না। পরিবর্তে দস্তাবেজে মাউসআপ হ্যান্ডলারটি রাখুন এবং এটি ভাল হবে: jsfiddle.net/SLQpM/23
টিম ডাউন

পুরানো ব্রাউজারগুলিতে এটি দুর্দান্ত কাজ যেগুলি চারপাশে উপাদানগুলি টেনে আনলে ব্যবহারকারী-নির্বাচিত সিএসএস সমর্থন করে না। মাউস মুভ কলব্যাকে ক্লিয়ারসিলেশন () কল করুন।
জর্ডি

6

ইন্টারনেট এক্সপ্লোরারের জন্য, আপনি দস্তাবেজের খালি পদ্ধতিটি ব্যবহার করতে পারেন lection

document.selection.empty ();

ক্রস ব্রাউজার সমাধানের জন্য, এই উত্তরটি দেখুন:

ফায়ারফক্সে একটি নির্বাচন সাফ করুন


যদি আপনার ওয়েবসাইটটি সর্বজনীন হয় (যেখানে আপনি ব্রাউজারগুলি নিয়ন্ত্রণ করেন সেখানে ইন্ট্রানেট নয়) এটি ভাল ধারণা নয়, এটি ক্রস ব্রাউজার নয়।
শ্যাডো উইজার্ড আপনার পক্ষে কান

4
: - উইজার্ড @Shadow সত্য, এই প্রশ্নের একটি ক্রস-ব্রাউজার সমাধান জন্য প্রাসঙ্গিক হতে পারে stackoverflow.com/questions/6186844/...
লুক Girvin

@ খুব সুন্দর, খুব খারাপ যে অন্য কোনও ওয়েবসাইট হতে চলেছে (সম্ভবত) বিভিন্ন ব্রাউজারের মধ্যে সামঞ্জস্যপূর্ণ নয় কারণ ওপি আপনাকে যা দিয়েছে তা নিয়েছে।
শেডো উইজার্ড আপনার পক্ষে কান

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

@ লুক কেবল আইই তে document.selection.clear()কাজ করে । এখানে দেখুন: jsfiddle.net/9spL8/4 এছাড়াও, এই পদ্ধতিটি কেবল এটি নির্বাচন না করে নির্বাচিত পাঠ্যটিকে সরিয়ে ফেলবে । কেবল পাঠ্যটি অনির্বাচিত করতে তার পরিবর্তে ব্যবহার করুন। document.selection.empty()
Vidime বিদাস

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);

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