النتائج 1 إلى 11 من 11

الموضوع: كيف يتم حساب ال offsetLeft لل textarea العربي، أرجو المساعدة

  1. #1
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    235

    كيف يتم حساب ال offsetLeft لل textarea العربي، أرجو المساعدة



    لدي مشكلة في هذا المقطع من السكريبت.

    لا يوجد offsetRight بالجافا سكريبت. لذا أحاول حساب offsetLeft .

    المطلوب:
    أريد تحديد ال offsetLeft لل cursor بداخل ال textarea
    أي أريد تحديد أين مسافة ال cursor (هذا اللي يضوي ويطفي لما تكتب) من حدود الصفحة ناحية الشمال.

    في ال textarea باللغة الاتنية يعمل بشكل طبيعي. و يحضر لي المسافة عن الشمال بالظبط. مثال الكود في الأسفل
    أكتب داخل ال textarea وسترى النتيجة.
    المشكلة هي : عندما أدخل dir="rtl" ، أي أقلب إتجاه ال textarea ، عندها لا تأتي المسافة صحيحة و يعطي قيمة ثابتة.
    أحتاج قيمة ال offsetLeft ضروري.


    إنشاء الله فهمت ما أقصد.
    لتجربة الكود على السريع من إنسخ الكود في هذه الصفحة Real-time HTML Editor

    كود:
    <html>
    <head>
    
    <script type="text/javascript">
    function zeige(){
    a= document.selection.createRange();
    b = a.offsetLeft;
    document.getElementById('zeiger').innerHTML = b;
     }
    </script>
    
    </head>
    
    <body>
    
    <form name="fo">
    <textarea id="myDiv"    name="ar" onkeypress="zeige()" style="position:absolute;  left:50px; top:20px;  width:400px;  height:200px;" ></textarea>
     </form>
    
    <div id="zeiger"></div>
    </body>
    </html>
    شكراً جزيلا لمن يستطيع حل هذه المشكلة، لأن بصراحة عصبتني.





    التعديل الأخير تم بواسطة amiraldo1 ; 12-01-2009 الساعة 01:30 AM


  2. #2
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    235


    ٤٣ زيارة، ولا واحد عنده حل.
    إذا كان الكود مش مفهوم أشرحه






  3. #3
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    235


    ولا واحد عنده فكرة يا حبيبي






  4. #4
    عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    674


    لا يوجد offsetRight

    لكن يوجد offsetWidth

    offsetWidth - offsetLeft = offset right

    فهمت؟





    __________________
    Professional Java?Script Programmer and Web Developer

  5. #5
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    235


    offsetWidth - offsetLeft = offset right
    طيب ما المطلوب offsetleft لل cursor أول شي، هي المشكلة.





    __________________
    www.2favorite.com إحفظ مواقعك المفضلة بأمان أونلاين

    www.lawwen.com/ads إعلانات لوّن



  6. TextInputElementWidth - offsetLeft = offset right
    TextInputElementWidth هو عرض ال text input





    __________________
    Keepondev | مدونه شديد التخصص فى الجافاسكربت
    جافاسكربت الموجهه بالكائنات | أنماط تصميم جافاسكربت

  7. #7
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    235


    TextInputElementWidth - offsetLeft = offset right
    TextInputElementWidth هو عرض ال text input
    ....................................................................

    مظبوط نفس الشي واش استفدت.
    ما المطلوب offsetleft لل cursor حتي تكتمل المعادلة.
    وال offsetLeft لا تعمل عندما أضع dir="rtl" في ال textarea
    جرب الكود الموجود في أول توبيك. قبل وضع dir="rtl" في ال Textarea و بعد وضع dir="rtl" وستفهم المشكلة

    ملاحظة: أكتب في ال textarea حتى ترى قيمة ال offsetLeft قبل وضع الإتجاه من اليمين إلى الشمال

    تحياتي





    التعديل الأخير تم بواسطة amiraldo1 ; 04-02-2009 الساعة 02:13 AM
    __________________
    www.2favorite.com إحفظ مواقعك المفضلة بأمان أونلاين

    www.lawwen.com/ads إعلانات لوّن

  8. #8
    عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    674


    الكودـ:

    كود PHP:
    <html>
    <
    head>
    <
    script type="text/javascript">
    function 
    zeige(){
    var 
    adocument.selection.createRange();
    var 
    a.offsetLeft;
    var 
    s=document.getElementById('ar').style.width;
    s.substring(0,s.length-2);
    b= eval(b-s)
    document.getElementById('zeiger').innerHTML b;
     }
    </script>
    </head>
    <body>
    <form name="fo">
    <textarea  id="ar"    name="ar" onkeypress="zeige()" style="position:absolute;  left:50px; top:20px;  width:400;  height:200px;" ></textarea>
     </form>
    <div id="zeiger"></div>
    </body>
    </html> 
    حاولت استخدام offsetparent لكن المشكلة معها انه لا يحدد الموقع الصحيحـ للـ cursor

    المشكلة الان تتلخص ان createRange()

    لا تعمل عند تحديد الاتجاه rtl للـ Text Element

    لا شئ بدون حل - لي عودة





    __________________
    Professional Java?Script Programmer and Web Developer

  9. #9
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    235


    شكرا ليوناردو دافنشي،
    نعم بالظبط هذه المشكلة,
    بالنسبة ل
    var s=document.getElementById('ar').style.width;
    s = s.substring(0,s.length-2);

    s هو رقم وليس String وأظن يجب أن يكون var s=document.fo.ar.value; حتى يسمح بإستخدام substring
    والله أعلم

    المهم المشكلة الأساسية، إنشاء الله تحل .)





    __________________
    www.2favorite.com إحفظ مواقعك المفضلة بأمان أونلاين

    www.lawwen.com/ads إعلانات لوّن

  10. #10
    عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    674


    شكرا ليوناردو دافنشي،
    نعم بالظبط هذه المشكلة,
    بالنسبة ل
    var s=document.getElementById('ar').style.width;
    s = s.substring(0,s.length-2);

    s هو رقم وليس String وأظن يجب أن يكون var s=document.fo.ar.value; حتى يسمح بإستخدام substring
    والله أعلم

    المهم المشكلة الأساسية، إنشاء الله تحل .)
    s هو رقم وليس String
    s هوة string لان قيمته 400px اذا كانت بدون px لكان رقماً ...!
    وأظن يجب أن يكون var s=document.fo.ar.value; حتى يسمح بإستخدام
    نفس الشئ فالمصقود هوة العنصر والافضل استخدام getElementbyId



    كود PHP:
    <html>
    <
    head>
    <
    script type="text/javascript">
    function 
    zeige(ctrl){
    //var ctrl=document.getElementById('ar');
     
    var CaretPos 0;
     
    // IE Support
     
    if (document.selection) {
      
    ctrl.focus ();
      var 
    Sel document.selection.createRange ();
      
    Sel.moveStart ('character', -ctrl.value.length);
      
    CaretPos Sel.text.length;
     }
     
    // Firefox support
     
    else if (ctrl.selectionStart || ctrl.selectionStart == '0'){
      
    CaretPos ctrl.selectionStart;}
     
     
    // بالشكل الحالي تظهر حسب عدد الاحرف السابقة للـcruse
     // اذا كنت تريدها بالبكسل وليس بعدد الاحرف فعل الاسطر التالية
     
     /*
     var a = ctrl.style.width
     a.substring(0,a.length-2);
     var CaretPos =(a - Sel.offsetLeft);
     */
     
      
    document.getElementById('zeiger').innerHTML CaretPos;
     
     
     }
    </script>
    </head>
    <body>
    <form name="fo">
    <textarea  id="ar"  dir=rtl  name="ar" onmouseup="zeige(this)" onmousedown="zeige(this)" onkeyup="zeige(this)" onkeydown="zeige(this)" onfocus="zeige(this)" onkeypress="zeige(this)" style="position:absolute;  left:50px; top:20px;  width:400;  height:200px;" ></textarea>
     </form>
    <div id="zeiger"></div>
    </body>
    </html> 

    اشكرك على سعة صبرك





    __________________
    Professional Java?Script Programmer and Web Developer

  11. #11
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    235


    شكراً لك ليوناردو على الإقتراح الجيد. ولكن ما زالت المشاكل بوجهي.

    --------------------------------------------------------------------
    Sel.moveStart ('character', -ctrl.value.length);
    إقتراح هذه الدالة جميل، و لكن هي تختص بعدد الأحرف، المشكلة هي مثلا إضغط enter بنص الtextarea بالسطر الثاني ستكون المعلومات خاطئة أي ال offsetLeft
    --------------------------------------------------------------------

    بالنسبة لرؤية المسافة بالبيكسل
    -------------------------------------------------
    var a = ctrl.style.width
    a.substring(0,a.length-2);
    var CaretPos =(a - Sel.offsetLeft);
    متغير ال sel غير معرف ب Firefox
    ------------------------------------------------

    المهم أنا أضفت إيميلك الموجود في التوقيع، ويمكنني أن أرسل لك سكريبت صغير تعرف لماذا أريد هذا الشيء و ما المشكلة بشكل أوضح.
    لقد أضفت إيميلك الذي في التوقيع على amiraldo1@hotmail.com
    أرجو الموافقة إذا أحببت التعاون فالمشكلة تحتاج لخبرة وليس وقت. وماديا أدفع لك 100 euro لحل هذه المشكلة بطريقة جيدة (ولا تفهم قصدي بالدفع خطأ .*).
    تحياتي





    التعديل الأخير تم بواسطة amiraldo1 ; 05-02-2009 الساعة 08:49 PM
    __________________
    www.2favorite.com إحفظ مواقعك المفضلة بأمان أونلاين

    www.lawwen.com/ads إعلانات لوّن





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض