একটি পাঠ্য সন্নিবেশ করানো হচ্ছে যেখানে কর্সার জাভাস্ক্রিপ্ট / জ্যাকোয়ারি ব্যবহার করছে


167

আমার অনেকগুলি পাঠ্যবাক্স সহ একটি পৃষ্ঠা রয়েছে। যখন কেউ একটি লিঙ্ক ক্লিক করে, আমি কার্সার যেখানে রয়েছে সেখানে একটি বা দুটি শব্দ প্রবেশ করানো চাই বা পাঠ্যবক্সে সংযুক্ত করে যেখানে ফোকাস রয়েছে।

উদাহরণস্বরূপ, যদি কার্সার / ফোকাসটি 'অ্যাপল' বলছে এমন কোনও পাঠ্যবক্সে থাকে এবং তিনি '[ইমেল]' বলে একটি লিঙ্ক ক্লিক করেন, তবে আমি পাঠ্যবাক্সটি 'অ্যাপল বব@example.com' বলতে চাই।

কিভাবে আমি এটি করতে পারব? এটি কি এমনকি সম্ভব, যেহেতু যদি ফোকাসটি কোনও রেডিও / ড্রপডাউন / নন পাঠ্যবক্সের উপাদানগুলিতে থাকে? পাঠ্যবক্সে শেষ দৃষ্টি নিবদ্ধ রাখা কি মনে রাখা যেতে পারে?


আমি ধরে নিয়েছি এটি সম্ভব হয়েছে কারণ এটি WYSISYG সম্পাদকগুলির ভিত্তি, এটি কীভাবে করবেন, আমি জানি না।
ইয়ান এলিয়ট


এই প্রশ্ন জিজ্ঞাসা করার জন্য আপনাকে ধন্যবাদ ... এখন আমি আমার ক্রোম এক্সটেনশন দিয়ে কার্সারে "[সংস্করণ]" ]োকাতে পারি!
হাইকমাম

যদি আপনি পূর্বাবস্থায় সমর্থন সহ একটি সাধারণ মডিউল খুঁজছেন, সারণি-পাঠ্য-পাঠ্য চেষ্টা করুন । আপনার যদি আই 8 + সমর্থন প্রয়োজন হয় তবে সন্নিবেশ-পাঠ্য-এ-কার্সার প্যাকেজটি চেষ্টা করুন।
ফ্রেংতে

উত্তর:


241

এটি এখান থেকে ব্যবহার করুন :

function insertAtCaret(areaId, text) {
  var txtarea = document.getElementById(areaId);
  if (!txtarea) {
    return;
  }

  var scrollPos = txtarea.scrollTop;
  var strPos = 0;
  var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
    "ff" : (document.selection ? "ie" : false));
  if (br == "ie") {
    txtarea.focus();
    var range = document.selection.createRange();
    range.moveStart('character', -txtarea.value.length);
    strPos = range.text.length;
  } else if (br == "ff") {
    strPos = txtarea.selectionStart;
  }

  var front = (txtarea.value).substring(0, strPos);
  var back = (txtarea.value).substring(strPos, txtarea.value.length);
  txtarea.value = front + text + back;
  strPos = strPos + text.length;
  if (br == "ie") {
    txtarea.focus();
    var ieRange = document.selection.createRange();
    ieRange.moveStart('character', -txtarea.value.length);
    ieRange.moveStart('character', strPos);
    ieRange.moveEnd('character', 0);
    ieRange.select();
  } else if (br == "ff") {
    txtarea.selectionStart = strPos;
    txtarea.selectionEnd = strPos;
    txtarea.focus();
  }

  txtarea.scrollTop = scrollPos;
}
<textarea id="textareaid"></textarea>
<a href="#" onclick="insertAtCaret('textareaid', 'text to insert');return false;">Click Here to Insert</a>


7
এটি দুর্দান্ত কাজ করেছে, তবে নির্বাচিত পাঠ্যটি সমস্ত পাঠ্য সম্পাদকরা যেমন বদলে তা হ্যান্ডেল করে না। পোস্টারের মূল প্রশ্নের জন্য এটি প্রয়োজন হতে পারে না, তবে আপনার যদি এটির প্রয়োজন হয় তবে আপনি কেবল 'txtArea.selectionEnd' দিয়ে 'strPos' প্রতিস্থাপন করতে পারেন। ব্রাউজার সনাক্তকরণ কোড অপসারণ সহ নীচের আমার উত্তরগুলি এটি দেখায়, যদি আপনার IE এর পুরানো সংস্করণগুলি সমর্থন করার প্রয়োজন না হয়।
জেফ্রি হারমন

এর সাথে সমস্ত উপাদান নির্বাচন করার কোনও উপায় আছে areaId?
হাইকমাম

1
আপনি এই জাতীয় ফাংশন theুকিয়ে নির্বাচিত পাঠ্যকে স্বয়ংক্রিয়ভাবে মুছতে পারবেন। function deleteTxt() { var ele = document.getElementById('yourTextarea'); var text = ele.value; text = text.slice(0, ele.selectionStart) + text.slice(ele.selectionEnd); ele.value = text; return text; }
এনটিস্টল

মাউস পজিশনে কীভাবে পাঠ্য সন্নিবেশ করা যায়?
থমরাই টি

তুমি সর্বশ্রেষ্ঠ!
একো সান্টোসো

156

সম্ভবত একটি সংক্ষিপ্ত সংস্করণ, বুঝতে সহজ হবে?

    jQuery("#btn").on('click', function() {
        var $txt = jQuery("#txt");
        var caretPos = $txt[0].selectionStart;
        var textAreaTxt = $txt.val();
        var txtToAdd = "stuff";
        $txt.val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<textarea id="txt" rows="15" cols="70">There is some text here.</textarea>
<input type="button" id="btn" value="OK" />

আমি জকিউরির সাথে পয়েন্টারের বর্তমান অবস্থান থেকে একটি পাঠ্যবক্সে একটি পাঠ কীভাবে যুক্ত করব তার প্রতিক্রিয়াতে এটি লিখেছিলাম ?


11
এছাড়াও আপনি সাথে মান পরিবর্তন করার পর ক্যারেট অবস্থান পুনরুদ্ধার করতে পারেন: document.getElementById("txt").selectionStart = caretPos + txtToAdd.length
বুল্ডওয়ার্ফ

1
ধন্যবাদ আমার জন্য কাজ করেছেন। এফওয়াইআই "সিলেকশন স্টার্ট" সম্পত্তিটি জিকিউরি নির্বাচনকারী through ("#") এর মাধ্যমে উপস্থিত নেই। আপনাকে ডকুমেন্ট.ইজেটমেন্টমেন্ট
লেগো

1
jsfiddle.net/NaHTw/802 আপনার সমাধানটি যা নির্বাচিত হয়েছে তার সাথে কী কী আটকানো হয়েছে তা প্রতিস্থাপন করতে কিছুটা বাড়তি যোগ করা হয়েছে
প্যাট্রিক

3
ঠিক আছে, আপনি যদি এখনও jQuery অপসারণ করতে যাচ্ছেন তবে আপনি সম্ভবত এটি সমস্ত সরিয়ে ফেলতে পারেন । ; ^)
রাফিন 21

8
কেবল সহায়তার জন্য, এখানে ক্যারেট পজিশন পুনর্নির্মাণের সাথে সম্পূর্ণরূপে নির্বাচিত ক্ষেত্রটি পেস্ট করা সামগ্রী সহ প্রতিস্থাপনের সম্পূর্ণ সমাধানটি রয়েছে: jsfiddle.net/NaHTw/1028
আলফাটেক

41

জর্জ ক্লাঘর্নের অনুমোদিত উত্তরটি কার্সার অবস্থানে কেবল পাঠ্য সন্নিবেশ করার জন্য দুর্দান্ত কাজ করেছে। ব্যবহারকারী যদি পাঠ্যটি নির্বাচন করে থাকেন এবং আপনি সেই পাঠ্যটি প্রতিস্থাপন করতে চান (বেশিরভাগ পাঠ্যের সাথে ডিফল্ট অভিজ্ঞতা), 'পিছনে' ভেরিয়েবলটি সেট করার সময় আপনাকে একটি ছোট পরিবর্তন করতে হবে।

এছাড়াও, যদি আপনার IE এর পুরানো সংস্করণগুলি সমর্থন করার প্রয়োজন না হয় তবে আধুনিক সংস্করণগুলি textarea.selectionStart সমর্থন করে, তাই আপনি ব্রাউজার সনাক্তকরণ এবং আই-নির্দিষ্ট কোডটি সমস্তটি বের করতে পারেন।

এখানে সরলিকৃত সংস্করণ যা Chrome এবং IE11 এর জন্য কমপক্ষে কাজ করে এবং নির্বাচিত পাঠ্যের পরিবর্তে পরিচালনা করে hand

function insertAtCaret(areaId, text) {
    var txtarea = document.getElementById(areaId);
    var scrollPos = txtarea.scrollTop;
    var caretPos = txtarea.selectionStart;

    var front = (txtarea.value).substring(0, caretPos);
    var back = (txtarea.value).substring(txtarea.selectionEnd, txtarea.value.length);
    txtarea.value = front + text + back;
    caretPos = caretPos + text.length;
    txtarea.selectionStart = caretPos;
    txtarea.selectionEnd = caretPos;
    txtarea.focus();
    txtarea.scrollTop = scrollPos;
}

এটি ভাল, তবে এটি উপাদানটির বিষয়টি আমলে নেয় না maxlength, সুতরাং সন্নিবেশের পরে ফলাফলের মান সর্বাধিকের চেয়ে দীর্ঘ হতে পারে।
mbomb007

22

উপরের কোডটি আইই তে আমার জন্য কাজ করে নি। এই উত্তরের উপর ভিত্তি করে এখানে কিছু কোড ।

আমি বের getElementByIdকরেছিলাম যাতে আমি উপাদানটি অন্যরকমভাবে উল্লেখ করতে পারি।

function insertAtCaret(element, text) {
  if (document.selection) {
    element.focus();
    var sel = document.selection.createRange();
    sel.text = text;
    element.focus();
  } else if (element.selectionStart || element.selectionStart === 0) {
    var startPos = element.selectionStart;
    var endPos = element.selectionEnd;
    var scrollTop = element.scrollTop;
    element.value = element.value.substring(0, startPos) +
      text + element.value.substring(endPos, element.value.length);
    element.focus();
    element.selectionStart = startPos + text.length;
    element.selectionEnd = startPos + text.length;
    element.scrollTop = scrollTop;
  } else {
    element.value += text;
    element.focus();
  }
}
input{width:100px}
label{display:block;margin:10px 0}
<label for="in2copy">Copy text from: <input id="in2copy" type="text" value="x"></label>
<label for="in2ins">Element to insert: <input id="in2ins" type="text" value="1,2,3" autofocus></label>
<button onclick="insertAtCaret(document.getElementById('in2ins'),document.getElementById('in2copy').value)">Insert</button>

সম্পাদনা: একটি চলমান স্নিপেট যুক্ত হয়েছে, jQuery ব্যবহৃত হচ্ছে না


উপাদান একটি jquery অবজেক্ট বা না? এলিমেন্ট.ভ্যালু এবং এলিমেন্ট.ফোকস () দুটোই কাজ করতে পারে না ...
স্কট স্টাফোর্ড

7
element.focus()গার্হস্থ্য বিষয়গুলির একটি জাভাস্ক্রিপ্ট পদ্ধতি বৈধ: w3schools.com/jsref/met_html_focus.asp
জলত্যাগ

1
সেরা ধারণা হ'ল আইই সামঞ্জস্যতা ড্রপ।
ar2015

2
হ্যাঁ, আমি এই উত্তরটি 7 বছর আগে লিখেছি। এই মুহূর্তে আইই 11 একটি ভাল ন্যূনতম সমর্থিত সংস্করণ, এবং উপরের কোডটি সেখানে কাজ করে।
কলিন অ্যান্ডারসন

6

@ কুইক_স্লিভ উত্তরটি ব্যবহার করে:

function insertAtCaret(el, text) {
    var caretPos = el.selectionStart;
    var textAreaTxt = el.value;
    el.value = textAreaTxt.substring(0, caretPos) + text + textAreaTxt.substring(caretPos);
};

4

জিকুয়ারি এবং জাভাস্ক্রিপ্টের মাধ্যমে কোনও পাঠ্যকে বর্তমান পাঠ্যবক্সের কার্সার অবস্থানে কীভাবে সন্নিবেশ করা যায়

প্রক্রিয়া

  1. বর্তমান কার্সার অবস্থানটি সন্ধান করুন
  2. পাঠ্যটি অনুলিপি করুন
  3. পাঠ্যটি সেখানে সেট করুন
  4. কার্সার অবস্থান আপডেট করুন

এখানে আমার কাছে 2 টি পাঠ্যবক্স এবং একটি বোতাম রয়েছে। আমাকে একটি টেক্সটবক্সে একটি নির্দিষ্ট অবস্থানে ক্লিক করতে হবে এবং তারপরে বোতামটি ক্লিক করে অন্য পাঠ্যবক্স থেকে পূর্ববর্তী পাঠ্যবক্সের অবস্থানে প্যাস্ট করতে হবে।

এখানে মূল সমস্যাটি হ'ল বর্তমান কার্সার অবস্থানটি পাওয়া যেখানে আমরা পাঠ্যটি পেস্ট করব।

//Textbox on which to be pasted
<input type="text" id="txtOnWhichToBePasted" />

//Textbox from where to be pasted
<input type="text" id="txtFromWhichToBePasted" />


//Button on which click the text to be pasted
<input type="button" id="btnInsert" value="Insert"/>


<script type="text/javascript">

$(document).ready(function () {
    $('#btnInsert').bind('click', function () {
            var TextToBePasted = $('#txtFromWhichToBePasted').value;
            var ControlOnWhichToBePasted = $('#txtOnWhichToBePasted');

            //Paste the Text
            PasteTag(ControlOnWhichToBePasted, TextToBePasted);
        });
    });

//Function Pasting The Text
function PasteTag(ControlOnWhichToBePasted,TextToBePasted) {
    //Get the position where to be paste

    var CaretPos = 0;
    // IE Support
    if (document.selection) {

        ControlOnWhichToBePasted.focus();
        var Sel = document.selection.createRange();

        Sel.moveStart('character', -ctrl.value.length);

        CaretPos = Sel.text.length;
    }
    // Firefox support
    else if (ControlOnWhichToBePasted.selectionStart || ControlOnWhichToBePasted.selectionStart == '0')
        CaretPos = ControlOnWhichToBePasted.selectionStart;

    //paste the text
    var WholeString = ControlOnWhichToBePasted.value;
    var txt1 = WholeString.substring(0, CaretPos);
    var txt2 = WholeString.substring(CaretPos, WholeString.length);
    WholeString = txt1 + TextToBePasted + txt2;
    var CaretPos = txt1.length + TextToBePasted.length;
    ControlOnWhichToBePasted.value = WholeString;

    //update The cursor position 
    setCaretPosition(ControlOnWhichToBePasted, CaretPos);
}

function setCaretPosition(ControlOnWhichToBePasted, pos) {

    if (ControlOnWhichToBePasted.setSelectionRange) {
        ControlOnWhichToBePasted.focus();
        ControlOnWhichToBePasted.setSelectionRange(pos, pos);
    }
    else if (ControlOnWhichToBePasted.createTextRange) {
        var range = ControlOnWhichToBePasted.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}

</script>

3

বর্তমান কার্সার অবস্থানে পাঠ্য যুক্ত করা দুটি পদক্ষেপ জড়িত:

  1. বর্তমান কার্সার অবস্থানে পাঠ্য যুক্ত করা হচ্ছে
  2. বর্তমান কার্সারের অবস্থান আপডেট করা হচ্ছে

ডেমো: https://codepen.io/anon/pen/qZXmgN

ক্রোম 48, ফায়ারফক্স 45, আইই 11 এবং এজ 25 তে পরীক্ষা করা হয়েছে

জাতীয়:

function addTextAtCaret(textAreaId, text) {
    var textArea = document.getElementById(textAreaId);
    var cursorPosition = textArea.selectionStart;
    addTextAtCursorPosition(textArea, cursorPosition, text);
    updateCursorPosition(cursorPosition, text, textArea);
}
function addTextAtCursorPosition(textArea, cursorPosition, text) {
    var front = (textArea.value).substring(0, cursorPosition);
    var back = (textArea.value).substring(cursorPosition, textArea.value.length);
    textArea.value = front + text + back;
}
function updateCursorPosition(cursorPosition, text, textArea) {
    cursorPosition = cursorPosition + text.length;
    textArea.selectionStart = cursorPosition;
    textArea.selectionEnd = cursorPosition;
    textArea.focus();    
}

এইচটিএমএল:

<div>
    <button type="button" onclick="addTextAtCaret('textArea','Apple')">Insert Apple!</button>
    <button type="button" onclick="addTextAtCaret('textArea','Mango')">Insert Mango!</button>
    <button type="button" onclick="addTextAtCaret('textArea','Orange')">Insert Orange!</button>
</div>
<textarea id="textArea" rows="20" cols="50"></textarea>

2

আমি মনে করি আপনি শেষ-দৃষ্টি নিবদ্ধ করা পাঠ্যবক্সটি ট্র্যাক করতে নিম্নলিখিত জাভাস্ক্রিপ্টটি ব্যবহার করতে পারেন:

<script>
var holdFocus;

function updateFocus(x)
{
    holdFocus = x;
}

function appendTextToLastFocus(text)
{
    holdFocus.value += text;
}
</script>

ব্যবহার:

<input type="textbox" onfocus="updateFocus(this)" />
<a href="#" onclick="appendTextToLastFocus('textToAppend')" />

পূর্ববর্তী সমাধান (gclaghorn যাও প্রপস) টেক্সারিয়া ব্যবহার করে এবং কার্সারের অবস্থানও গণনা করে, তাই আপনি যা চান তার জন্য এটি আরও ভাল হতে পারে। অন্যদিকে, এটি আপনি যদি সন্ধান করছেন তবে এটি আরও বেশি হালকা হবে।


ভাল ধারণা. আমি জকিউরি ব্যবহার করেছি সুতরাং প্রতিটি পাঠ্যবাক্স যার একটি নির্দিষ্ট ক্লাস ছিল তাদের প্রতিটি টেক্সটবক্সের এইচটিএমএলে "অনফোকাস = ..." রাখার পরিবর্তে এই ইভেন্টটি প্রয়োগ করা হয়েছিল। তবে ভাল পন্থা :)
15-04 এ আপভোটটি ক্লিক করুন

1

গৃহীত উত্তর ইন্টারনেট এক্সপ্লোরার 9. আমি পরীক্ষিত এটা এবং ব্রাউজার সনাক্তকরণ সঠিকভাবে কাজ করছে না হয়েছিল, এটা সনাক্ত করা আমার জন্য কাজ না করে FF (Firefox) যখন আমি ইন্টারনেট এক্সপ্লোরার ছিল।

আমি এই পরিবর্তনটি করেছি:

if ($.browser.msie) 

পরিবর্তে:

if (br == "ie") { 

ফলাফলযুক্ত কোডটি হ'ল:

function insertAtCaret(areaId,text) {
    var txtarea = document.getElementById(areaId);
    var scrollPos = txtarea.scrollTop;
    var strPos = 0;
    var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? 
        "ff" : (document.selection ? "ie" : false ) );

    if ($.browser.msie) { 
        txtarea.focus();
        var range = document.selection.createRange();
        range.moveStart ('character', -txtarea.value.length);
        strPos = range.text.length;
    }
    else if (br == "ff") strPos = txtarea.selectionStart;

    var front = (txtarea.value).substring(0,strPos);  
    var back = (txtarea.value).substring(strPos,txtarea.value.length); 
    txtarea.value=front+text+back;
    strPos = strPos + text.length;
    if (br == "ie") { 
        txtarea.focus();
        var range = document.selection.createRange();
        range.moveStart ('character', -txtarea.value.length);
        range.moveStart ('character', strPos);
        range.moveEnd ('character', 0);
        range.select();
    }
    else if (br == "ff") {
        txtarea.selectionStart = strPos;
        txtarea.selectionEnd = strPos;
        txtarea.focus();
    }
    txtarea.scrollTop = scrollPos;
}


0

আপনি কেবল সেখানে প্রয়োজনীয় পাঠ্যবাক্সকে ফোকাস করতে পারেন the ফোকাস কোথায় আছে তা খুঁজে পাওয়ার কোনও উপায় নেই (সম্ভবত সমস্ত ডিওএম নোডের সাথে ইন্টারঅ্যাক্ট করছেন?)।

এই স্ট্যাকওভারফ্লোটি পরীক্ষা করে দেখুন - এটি আপনার জন্য একটি সমাধান রয়েছে: কোন ডিওএম উপাদানটির ফোকাস রয়েছে তা আমি কীভাবে আবিষ্কার করব?


0

সামগ্রী সম্পাদনাযোগ্য, এইচটিএমএল বা অন্য কোনও ডিওএম উপাদান নির্বাচন

আপনি যদি ক্যারেটে sertোকানোর চেষ্টা করছেন তবে এটি <div contenteditable="true">আরও বেশি জটিল হয়ে ওঠে, বিশেষত যদি সম্পাদনাযোগ্য পাত্রে কোনও শিশু থাকে।

রঙিন লাইব্রেরিটি ব্যবহার করে আমার সত্যি ভাগ্য হয়েছে :

এটিতে দুর্দান্ত একটি বৈশিষ্ট্য রয়েছে যেমন:

  • অবস্থান বা নির্বাচন সংরক্ষণ করুন
  • তারপরে, অবস্থান বা নির্বাচন পুনরুদ্ধার করুন
  • এইচটিএমএল বা সাদামাটা বাছাই করুন
  • অন্য অনেকের মধ্যে

অনলাইন ডেমোটি শেষ পর্যন্ত কাজ করছে না আমি যাচাই করেছিলাম, তবে রেপোতে ডেমো কাজ করছে। শুরু করতে, গিট বা এনপিএম থেকে সরল রেপো ডাউনলোড করুন, তারপরে ./rangy/demos/index.html খুলুন

এটি ক্যারেট পোস্ট এবং পাঠ্য নির্বাচনের সাথে বাতাস তৈরি করে!


0

এই প্রশ্নের উত্তর এত দিন আগে পোস্ট করা হয়েছিল এবং আমি গুগল অনুসন্ধানের মাধ্যমে তাতে হোঁচট খেয়েছি। এইচটিএমএল 5 এইচটিএমএলপুটমেটমেন্ট এপিআই সরবরাহ করে যা সেটরেঞ্জটেক্সট () পদ্ধতি অন্তর্ভুক্ত করে , যা একটি নতুন স্ট্রিং সহ একটি উপাদান <input>বা <textarea>উপাদানের বিভিন্ন পাঠ্যকে প্রতিস্থাপন করে :

element.setRangeText('abc');

উপরে ভিতরে তৈরি নির্বাচন প্রতিস্থাপন করবে elementসঙ্গে abc। ইনপুট মানটির কোন অংশটি প্রতিস্থাপন করতে হবে তা আপনি নির্দিষ্ট করতে পারেন:

element.setRangeText('abc', 3, 5);

উপরেরটি ইনপুট মানটির 4 র্থ অক্ষরের সাথে প্রতিস্থাপন করবে abc। 4 র্থ প্যারামিটার হিসাবে নিম্নলিখিত স্ট্রিংগুলির মধ্যে একটি সরবরাহ করে পাঠ্য প্রতিস্থাপনের পরে বাছাইটি কীভাবে সেট করা উচিত তাও আপনি নির্দিষ্ট করতে পারেন:

  • 'preserve'নির্বাচন সংরক্ষণ করার চেষ্টা করে। এটি ডিফল্ট।
  • 'select' সদ্য inোকানো পাঠ্যটি নির্বাচন করে।
  • 'start' selectionোকানো পাঠ্যের ঠিক আগে নির্বাচনটি সরান।
  • 'end' selectionোকানো টেক্সটের ঠিক পরে নির্বাচনটি সরান।

ব্রাউজার সামঞ্জস্য

সেটরেঞ্জটেক্সটের এমডিএন পৃষ্ঠাটি ব্রাউজারের সামঞ্জস্যতা ডেটা সরবরাহ করে না, তবে আমার ধারণা এটি HTMLInputElement.setSelectionRange () হিসাবে একই হবে , যা মূলত সমস্ত আধুনিক ব্রাউজার, IE 9 এবং তারপরে , এজ 12 এবং তারপরের

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