سؤال

لدي نص وقائمة. عندما ينقر المستخدم المزدوج على عنصر قائمة ، يجب إدراج تسمية العنصر المحدد في Textarea. عندما يتم تحديد نص في Textarea ، يجب استبداله ، وإلا يحتاج النص إلى إدراج فقط في النص الموجود في نقطة الهدف.

لقد تمكنت من الحصول على النص وكل شيء ، لا يمكنني إدراجه في Caret Point. لا أحد يعرف كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

إنه في الواقع ليس JavaScript ولكن Adobe Flex 3. شكرًا للمساعدة ، فقد دفعني في الاتجاه الصحيح. هذه هي الطريقة التي تم بها في Flex 3:

var caretStart:int = textArea.selectionBeginIndex;
var caretEnd:int = textArea.selectionEndIndex;
textArea.text = textArea.text.substring(0,caretStart)
              + newText
              + textArea.text.substr(caretEnd);

نصائح أخرى

تعمل الإجابة المقبولة بشكل رائع إذا لم يكن لديك تنسيق HTML موجود. في حالتي ، أدخلت زرًا جديدًا في المحرر أنه يمكن للمستخدم النقر لوضع كلمة رئيسية. ظللت أفقد جميع تنسيق HTML حتى حفرت في الفصل الفعلي ووقفت مع كائن Textrange:

       public function keyWord_Click(event:Event) : void 
        {

            var caretStart:int = txtEditor.textArea.selectionBeginIndex;
            var caretEnd:int = txtEditor.textArea.selectionEndIndex;
            var newText : String = "[[[KEYWORD]]]";

            var tf:TextRange = new TextRange(txtEditor,true,caretStart,caretEnd);
            tf.text = newText;

        }

الشيء الجميل في هذا النهج هو ، يمكنك أيضًا تطبيق التنسيق الشرطي على هذا الكائن Textrange حسب الحاجة.

يمكنك استخدام txtarea.selectionStart و txtarea.selectionend للحصول على موضع نص محدد.

بعد ذلك ، يمكنك حذف txt وإضافة نص محدد جديد.

أنا لا أعرف الكثير عن JavaScript ، لذلك كتبته من أجل U.

يمكنك البحث على Google بكلمات رئيسية: "JavaScript Select Textarea" "JavaScript أضف نصًا في الموضع"

رمز عينة: دالة insertatcursor (myField ، myValue) {// ie دعم if (document.selection) {myfield.focus () ؛ sel = document.selection.createRange () ؛ sel.text = myValue ؛ }. var endpos = myField.SelectionEnd ؛ myfield.value = myfield.value.substring (0 ، startPos) + myValue + myfield.value.substring (endpos ، myfield.value.length) ؛ } آخر {myfield.value += myValue ؛ }

caretPos = doGetCaretPosition(myField);
alert(caretPos);
setCaretPosition(myField,caretPos-3);

}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top