Могу ли я использовать Laravel 5 для клонирования поля выбора и при этом использовать привязку модели формы?

(Прошу прощения за многогранный вопрос!)

В основном вопрос таков; как я могу использовать функциональность Laravel 5 для клонирования поля выбора, сохранения этих данных и (в качестве бонуса) отображения данных при помощи привязки модели формы. Таким образом, если есть одна «группа» опыта работы (будь то компания и должность) или их много, все они будут отображаться правильно.

Я создал форму с полями, как показано ниже:

<div class="workexperience">
<!--Work Experience / position   -->
<!--  Form Input -->
<div class="form-group">
{!!Form::label('positions_list', 'Work Experience:')!!}
{!!Form::select('positions_list', $positions, null, ['id'=> 'positions_list', 'class'=>'form-control','multiple'])!!}
</div>
<!--company-->
<div class="form-group" >
{!!Form::label('companies_list', 'Company:')!!}
{!!Form::select('companies_list', $companies, null, ['id'=>'companies_list','class'=>'form-control','multiple'])!!}
</div>
</div>
<div id="workexperience-placeholder"></div>
<a onclick="cloneMe('#workexperience')" class="btn btn-default btn-block"><span class="icon-entypo icon-plus"></span><b>Add Another</b></a>

и я использую jquery clone, чтобы позволить пользователю добавлять новые наборы позиций и компаний

function cloneMe(thisDiv)
{
$(thisDiv).clone(false).insertBefore(thisDiv+"-placeholder:last")

}

Визуально это, кажется, работает, поскольку это действительно клонирует коробки. Однако я использую Select2 для создания эффекта «тега» (из Laracasts-23 «Синхронизация тегов»!) И, если в выпадающем списке уже есть данные (фактически «тег»), когда я нажимаю, чтобы клонировать блоки, в которых находятся данные. перенесли в новое клонированное поле.

Как мне клонировать таким образом, чтобы выбранный элемент не переносился? Я пытался использовать JQuery, такие как:

.find("input").val('').end()

но мне не повезло (я попытался выбрать вместо ввода в вышеупомянутом)

Я уверен, что то, что я пытаюсь сделать, на самом деле довольно распространено, но я просто пытаюсь найти способ сделать это. (Я также попробовал cloneya, но это, казалось, конфликтовало с Select2.)

Если у вас есть предложения по улучшению моего вопроса, пожалуйста, дайте мне знать.

Заранее спасибо!

Mhluzi

0

Решение

Я решил свою проблему, ориентируясь на каждого отдельного выбора:

$('.positions').select2("destroy");
$('#workexperience').clone(true).insertBefore("#workexperience-placeholder:last")
.end();
$('.positions:last').removeAttr("selected")
.val([])
.end();
$('.positions').select2(
{
placeholder: 'Current or last position',
maximumSelectionLength: 1,
tags: true
});

Не очень элегантно, но это работает для меня.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]