קוד שמונע מטופס לשלוח ערך של שדה מסויים
-
יש לי טופס של https://editor.datatables.net.
אני משתמש בקוד דלהלן כדי לשנות דינמית את האופציות בINPUT-SELECT.
הבעיה, שאחרי שהקוד הזה רץ אז הטופס לא שולח לשרת ערך מהשדה הזה.
היכן הבעיה?selectoptions = allOptions.filter(allOption => allOption.jobsid === id_gob) var $el = $("#DTE_Field_job_sub_id"); $el.empty(); // remove old options $.each(selectoptions, function(key,value) { $el.append($("<option></option>") .attr("value", value.value).text(value.label)); //console.log(value) }); -
כנראה הוא מאזין לאירועי בחירה של הoption שהוא יצר, לא לאלה שאתה יוצר לבד.
אתה צריך להשתמש עם הAPI שלהם בשביל לעדכן את הערכים,
אולי משהו כזה:var optionsObj = {}; allOptions.filter(allOption => allOption.jobsid === d_gob).forEach(x => optionsObj[x.label] = x.value); editor.field('name_of_field').update(optionsObj); -
var customForm = ` <div id="customForm"> <fieldset class="name"> <legend>פרטים</legend> <editor-field name="job_id"></editor-field> <editor-field name="job_sub_id"></editor-field> </fieldset> </div>` function change_options_to_sub_jobs(id_job) { var allOptions = get_sub_jobs(); selectoptions = allOptions.filter(allOption => allOption.jobsid === id_job) //console.log(selectoptions) var $el = $("#DTE_Field_job_sub_id"); $el.empty(); // remove old options $.each(selectoptions, function (key, value) { $el.append($("<option></option>") .attr("value", value.value).text(value.label)); //console.log(value) }); /* var optionsObj = {}; allOptions.filter(allOption => allOption.jobsid === id_job).forEach(x => optionsObj[x.label] = x.value); editor.field('DTE_Field_job_sub_id').update(optionsObj); */ return selectoptions; } $(document).ready(async function () { function insertselects(data) { selectsinclient = data } await f().then(insertselects); var editor; // use a global for the submit and return data rendering in the examples editor = new $.fn.dataTable.Editor({ ajax: 'https://www.XXXXX.org/data-editor.php', table: '#table_id', idSrc: 'id', template: customForm, fields: [ { label: 'תחום:', name: 'job_id', type: 'select',//לעריכה options: get_jobs() }, { label: 'תת-תחום:', name: 'job_sub_id', type: 'select',//לעריכה options: get_sub_jobs() } ] }); editor.on('open', function () { var table = $('#table_id').DataTable(); var allData = table.rows().data(); if (table.cell('.selected', 0).index() !== undefined) { var idx = table.cell('.selected', 0).index(); var data = table.row(idx.row).data(); all_jobs = selectsinclient['jobs']; DTE_Field_job_id.value = all_jobs.find(job => job.name === data.job_id)['id']; all_subjobs = selectsinclient['subJobs']; DTE_Field_job_sub_id.value = all_subjobs.find(subjob => subjob.name === data.job_sub_id)['id']; } $("#DTE_Field_job_id").change(function () { change_options_to_sub_jobs(DTE_Field_job_id.value) }); }); $('#table_id').DataTable({ scrollY: 400, dom: 'Bfrtip', select: true, buttons: [ { extend: 'create', editor: editor }, { extend: 'edit', editor: editor }, { extend: 'remove', editor: editor } ], order: [[0, 'DESC']], qpageLength: 300, data: data, ajax: { url: 'https://www.XXXXX.org/jobs.php', dataSrc: '' }, columns: [ { data: 'job_id' }, { data: 'job_sub_id' }, ] } ); }); -
function change_options_to_sub_jobs(id_job, editor) { var allOptions = get_sub_jobs(); var optionsObj = {}; allOptions.filter(allOption => allOption.jobsid === id_job).forEach(x => optionsObj[x.label] = x.value); return optionsObj; }ובקוד הקורא שמכיר את הeditor לבצע את השינוי:
$("#DTE_Field_job_id").change(function () { var options = change_options_to_sub_jobs(DTE_Field_job_id.value); editor.field('job_sub_id').update(options); }); -
function change_options_to_sub_jobs(id_job, editor) { var allOptions = get_sub_jobs(); var optionsObj = {}; allOptions.filter(allOption => allOption.jobsid === id_job).forEach(x => optionsObj[x.label] = x.value); return optionsObj; }ובקוד הקורא שמכיר את הeditor לבצע את השינוי:
$("#DTE_Field_job_id").change(function () { var options = change_options_to_sub_jobs(DTE_Field_job_id.value); editor.field('job_sub_id').update(options); }); -
לא בדיוק. ז"א הבנתי שהוא לא הכיר את הeditor, לא הבנתי למה (כי חשבתי שבJS הכל 'נמצא על השולחן' יחד).
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות
