Я испытываю проблему на моей инструментальной панели, где пользователи могут переупорядочить смешанный список предметов, некоторые из которых являются «ссылками», а другие - «встраивания» - используя сортируемый.js. После переупорядочивания я обновляю атрибуты данных-индекс для каждого элемента, а затем перестраиваю скрытые поля ввода, используемые для подачи формы. Однако после сохранения страницы я иногда обнаруживаю, что один из элементов (часто ссылка) кажется пустым (ее значения отсутствуют). < /P>
Я подозреваю, что проблема заключается в том, как я режу -индекс и восстановить скрытые входы для смешанного контента. В своей реализации я обновляю индексы для ссылок и встраиваний отдельно, но затем перестраиваю скрытые поля, используя унифицированную петлю по всем элементам. Link-item. Это может привести к несоответствию индекса между восстановленными скрытыми полями и фактическим порядком элементов. < /P>
Ниже приведены соответствующие части моего кода: < /p>
JavaScript: < /p>
if (linksContainerEl) {
new Sortable(linksContainerEl, {
handle: '.drag-handle',
animation: 400,
onEnd: function () {
// Update each item's data-index based on type
let linkIndex = 0;
let embedIndex = 0;
$('#links-container .link-item').each(function () {
const type = $(this).data('type');
if (type === 'link') {
$(this).attr('data-index', linkIndex);
linkIndex++;
} else if (type === 'embed') {
$(this).attr('data-index', embedIndex);
embedIndex++;
}
});
// Rebuild hidden fields with the correct indexes
$('#links-container .link-item').each(function (i) {
const $item = $(this);
const itemType = $item.data('type');
if (itemType === 'link') {
const iconClass = $item.find('input[name^="links[icon_class]"]').val() || '';
const linkText = $item.find('input[name^="links[link_text]"]').val() || '';
const linkUrl = $item.find('input[name^="links[link_url]"]').val() || '';
const isPopup = $item.find('input[name^="links[is_popup]"]').val() || '0';
const popupContent = $item.find('input[name^="links[popup_content]"]').val() || '';
const isEnabled = $item.find('input[name^="links[enabledHidden]"]').val() || '1';
// Remove old link inputs
$item.find('input[name^="links["]').remove();
// Recreate them with the new index
$item.append(`
Подробнее здесь: https://stackoverflow.com/questions/794 ... d-links-an
Проблема с восстановлением скрытых входов после перетаскивания и сортировки смешанных «ссылок» и «встроенных» с использо ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение