עזרה ב select2
-
אני צריך פקד שיכול לשלב תיבת input ו select, דהיינו שיוכלו גם לבחור מהרשימה וגם להוסיף טקסט מחוץ לרשימה.
בינתיים מצאתי את האפשרותtags: true
ב select2', שזה בעצם מכניס מיידית בעת הקלדה את הערך המוקלד לרשימה.
הבעיה בזה:1 שאני צריך גם לעדכן את הערך ולפעמים בערך שאינו קיים ברשימה, מה שקורה שאם אני מעדכן בערך שאינו מהרשימה:
$('#id).val('ABC')
זה לא מתעדכן.
מצאתי לזה פתרון:var newOption = new Option('ABC', 'ABC', false, false); $('#id').append(newOption).val('ABC').trigger('change');
זה בעצם מכניס את הערך קודם לרשימה, הבעיה בזה, שאם הערך כבר קיים הוא נכנס פעמיים ברשימה...
2 אני רוצה שהערך יישמר מיד לאחר ההקלדה, בדומה להקלדה ב input, כאן כל זמן שהמשתמש לא לחץ על התוצאה, אפילו הוא הקליד את כל הטקסט, הערך לא יישמר בפקד.
(עריכה: את זה פתרתי עם הוספת המאפייןselectOnClose: true
). -
if ($('#id').find("option[value='" + ABC + "']").length) { $('#id').val(ABC).trigger('change'); } else { // Create a DOM Option and pre-select by default var newOption = new Option(ABC, ABC, true, true); // Append it to the select $('#id').append(newOption).trigger('change'); }
-
@chagold כעת זה עובד.
עדיין נשאר לי בעיה אחת...
אני צריך גם אפשרות לאפס את הרשימה, כי הפקד הזה נשאר פעיל לאחר שליחת הנתונים, רק שאני קובע לו ערך חדש: '', הבעיה שבמימוש הנ"ל, נשאר כל מה שהוספתי לרשימה.
אני רוצה שיישאר רק הערכים המקוריים.
כרגע שמתי את הערכים כתגיות option בתוך התגית select ב HTML. -
@chagold אמר בעזרה ב select2:
לא הבנתי מה זה הערכים המקוריים? ולאפס למה?
הערכים המקוריים, זה מה שמופיע ב HTML:
<select id="id"> <option value=""></option> <option value="A">A</option> <option value="B">B></option> <option value="C">C</option> ... </select>
הערכים שאני מוסיף באמצע ('ABC'), אני רוצה לנקות אותם אח"כ.
זה באמת לא קריטי, אבל יותר נחמד. -
לא הבנתי לגמרי מה אתה מחפש, אבל תבדוק אם הפקד datalist עוזר לך
-
@יוסף-בן-שמעון זה נראה בדיוק מה שאני מחפש.
אבל יש לו גם את החסרונות הנ"ל
הוא מכניס כל הקלדה חדשה לרשימה...לגבי קביעת ערך, וכו' לא בדקתי.
-
@יוסף-בן-שמעון אמר בעזרה ב select2:
לא הבנתי לגמרי מה אתה מחפש, אבל תבדוק אם הפקד datalist עוזר לך
אני רואה שזה משהו חדש, שלא נתמך בכל הדפדפנים.