如何解决Select2entity 不适用于嵌入表单
->add('product',Select2EntityType::class,[
'remote_route' => 'search','class' => Product::class,'primary_key' => 'id','text_property' => 'name','minimum_input_length' => 2,'page_limit' => 10,'allow_clear' => true,'delay' => 250,'cache' => true,'cache_timeout' => 60000,// if 'cache' is true
'language' => 'fr','placeholder' => 'yep','allow_add' => [
'enabled' => true,'new_tag_text' => '','tag_separators' => '[".",","]'
],'multiple' => false,'attr' => [
'style' => 'width:100%'
],'scroll' => true,])
我的html:
{% block main %}
<div class="Box-body">
<div class="row">
<div id="dynamic-relations-elements" class="hidden">
</div>
</div>
{% endblock %}
{% block body_javascript %}
{{ parent() }}
<script src="{{ asset('build/js/users.js') }}"></script>
<script src="{{ asset('bundles/tetranzselect2entity/js/select2entity.js') }}"></script>
{% endblock body_javascript %}
在ventilation.js
我有:
$('#dynamic-relations-elements').removeClass('hidden');
$.ajax({
type: "GET",url: Routing.generate('create'),success: function (response) {
$('#dynamic-relations-elements').html(response);
}
})
以及构建表单的路径:
/**
* @Route("/ajax/product-create",name="create",* options = { "expose" = true })
* @param Request $request
* @return Response
*/
public function createProduct()
{
$productVen = new Product();
$form = $this->createForm(ProductType::class,$productVen);
return $this->render('/users/add-product.html.twig',[
'form' => $form->createView(),]);
}
问题是选择框没有初始化。我有一个字段 product
一个简单的文本输入而不是一个选择框。我在浏览器控制台中没有错误。请问有什么想法吗?提前谢谢
解决方法
如果您查看 source 行 144 - 148,您将看到元素是如何初始化的:
(function ($) {
$(document).ready(function () {
$('.select2entity[data-autostart="true"]').select2entity();
});
})(jQuery);
在您的情况下,这最初发生在表单存在之前。所以看起来你只需要手动初始化元素。
尝试这样的事情:
$.ajax({
type: "GET",url: Routing.generate('_route_ventilation_products_create'),success: function (response) {
let $dre = $('#dynamic-relations-elements');
$dre.html(response);
let $s2 = $dre.find('.select2entity');
$s2.select2entity();
$s2.on('change',function(){
// do something with selected value
console.log(this.id,$(this).find(':selected').val());
});
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。