שלח תשובה

זירת השאלות

592
צפיות
6
תשובות

שאלה בקשר ל-AJAX דינמי..

,‏ 13 בינואר, 2006

שלום לכולם.
בתיעוד של החבילה: prototype, כתוב שצריך לכתוב בקובץ ה-JS שלי, את הפונ' הזאתי:


function init(){
    makeEditable('desc');
}


הממ.. הבעיה שלי היא, שאין מידע כמה פרמטרים יהיו לי בסיום תהליך יצירת הפלט.
כי אני משתמש בלולאה ומציג שדות שונים בעמוד הזה.


כיצד מסתדרים עם זה?
תודה רבה..

תגיות:

6 תשובות

  1. ניר טייב הגיב:

    1. אתחיל מזה שהמדריך
    שהבאתי לך לפיצ'ר Edit In Place משתמש בחבילה Prototype שזו חבילה לתאימות בין דפדפנים והקלה על חיי המתכנת.
    אבל הפונקציה שאתה מראה, היא חלק מהקוד של המדריך ולא של החבילה.

    לגבי הבעייה שלך,
    תיתן לכל אלמנט שאתה רוצה לאפשר עריכה איזה שהוא css class מסויים (אפילו שהוא לא קיים באמת):

    <p class="editabletext">I'm editable text</p>

    כחלק מספריית prototype יש פונקציה שהכניסו לתוך האובייקט document שנקראת: getElementsByClassName.

    עכשיו בעזרת הפונקציה הזו תיצור אוסף/מערך של כל האלמנטים שניתנים לעריכה  ואז תקרא לפונקציה עבורם.


    function init(){
      var allEditables = document.getElementsByClassName("editabletext");
    for(var i=0;i<allEdiables.length;i++){
    makeEditable(allEditables[i]);
    }
    }

    את הפונקציה makeEditable תתקן כך שהיא תקבל ישר את האובייקט ולא את ה-ID של האובייקט.

    בהצלחה.

  2. KingYes הגיב:

    הממ..
    ראשית כל, תודה רבה ניר על הרעיון.

    אבל, לא בדיוק הבנתי מה לערוך בפונ' makeEditable(), כדי שתקבל את האובייקט עצמו ולא את ה-ID?

    ואם אפשר – עוד שאלה על הדרך – כיצד ניתן לעשות שבתוך התיבת הטקסט עצמו, כאשר אני ילחץ על המקש ENTER, הוא ישלח לי את הטופס ויעדכן לי את הפקד?  (כמובן ה-AJAX)

    תודה רבה.

  3. ניר טייב הגיב:

    בתחילת המאמר אם אני זוכר נכון
    יש מדריך קצר לשימוש בחבילת הפיתוח Prototype, תעבור עליו קודם (זה כתוב שם אגב…)

    בכל אופן, מה שאתה מבקש אלו דברים די בסיסיים, עליך ללמוד על DOM וממשק האירועים (addEventListener, attachEvent)

  4. KingYes הגיב:

    המממ..
    במדריך הוא משתמש ככה:

    Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);

    זה בשביל הכפתור שליחה (SEND).
    אבל, מה בדיוק כותבים ב-AJAX כדי לעשות שאם ילחצו על ENTER, הוא ישלח את הנתונים בתיבת הטקסט?

  5. KingYes הגיב:

    הממ.. לא הולך לי..
    הגדרתי class בשם "promo_link" לכל אלו שאני צריך, אך כאשר אני משתמש בפונ' init() שלי (ראה למטה את תוכנה), הוא מודיעה לי על השגיאה הזאתי:

    http://kingyes.t35.com/image/error.png

    השתמשתי בקוד הזה:


    function init(){
      var allEditables = document.getElementsByClassName("promo_link");
      for(var i=0;i<allEdiables.length;i++){
           makeEditable(allEditables[i]);
        }
    }

    function makeEditable(obj){
        Event.observe(obj.id, 'dblclick', function(){edit($(obj.id))}, false);
    }

    תודה רבה.

שלח תשובה