592
צפיות
צפיות
6
תשובות
תשובות
שאלה בקשר ל-AJAX דינמי..
שלום לכולם.
בתיעוד של החבילה: prototype, כתוב שצריך לכתוב בקובץ ה-JS שלי, את הפונ' הזאתי:
function init(){
makeEditable('desc');
}
הממ.. הבעיה שלי היא, שאין מידע כמה פרמטרים יהיו לי בסיום תהליך יצירת הפלט.
כי אני משתמש בלולאה ומציג שדות שונים בעמוד הזה.
כיצד מסתדרים עם זה?
תודה רבה..
6 תשובות
ajax זה צד לקוח…
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 של האובייקט.
בהצלחה.
הממ..
ראשית כל, תודה רבה ניר על הרעיון.
אבל, לא בדיוק הבנתי מה לערוך בפונ' makeEditable(), כדי שתקבל את האובייקט עצמו ולא את ה-ID?
ואם אפשר – עוד שאלה על הדרך – כיצד ניתן לעשות שבתוך התיבת הטקסט עצמו, כאשר אני ילחץ על המקש ENTER, הוא ישלח לי את הטופס ויעדכן לי את הפקד? (כמובן ה-AJAX)
תודה רבה.
בתחילת המאמר אם אני זוכר נכון
יש מדריך קצר לשימוש בחבילת הפיתוח Prototype, תעבור עליו קודם (זה כתוב שם אגב…)
בכל אופן, מה שאתה מבקש אלו דברים די בסיסיים, עליך ללמוד על DOM וממשק האירועים (addEventListener, attachEvent)
המממ..
במדריך הוא משתמש ככה:
Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);
זה בשביל הכפתור שליחה (SEND).
אבל, מה בדיוק כותבים ב-AJAX כדי לעשות שאם ילחצו על ENTER, הוא ישלח את הנתונים בתיבת הטקסט?
הממ.. לא הולך לי..
הגדרתי 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);
}
תודה רבה.