أدخل النص في Textarea Flex 3
سؤال
لدي نص وقائمة. عندما ينقر المستخدم المزدوج على عنصر قائمة ، يجب إدراج تسمية العنصر المحدد في 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);
}