我在我的表单上使用 select2 选择 htmx 但由于某种原因,当表单字段有 select2 时 hx-get 不发送任何请求
我试图关闭 select2 并且一切正常,那么我该如何解决这个问题?
模板.html
<form method="get" class="mb-3">
<div class="well">
<div class="row">
<div class="form-group col-sm-4 col-md-4 mb-3">
<div class="custom-select">
{% render_field form.contractor_object|add_class:'form-select' hx-get="/customer/worklog/" hx-target='#id_test' hx-select="#id_test" %}
</div>
</div>
<div class="form-group col-sm-4 col-md-4 mb-3">
<div class="custom-select" id="id_test">
{% render_field form.contractor_section|add_class:'form-select' %}
</div>
</div>
</div>
</div>
<div class="mt-4 custom-label">
<div class="row">
<div class="col">
<button type="submit" class="btn btn-outline-primary">Поиск</button>
<a class="btn btn-outline-primary" href="{% url 'customer_worklog' %}">Сброс</a></div>
</div>
</div>
</form>
<script>
$(document).ready(function () {
$("#id_contractor_object").select2();
});
</script>
<script>
$(document).ready(function () {
$("#id_contractor_counter").select2();
});
</script>
<script>
$(document).ready(function () {
$('#id_contractor_section').select2();
});
</script>
Select2 插件会转换您最初在标记中定义的元素,这就是 htmx 停止处理该元素的原因。一个简单的解决方法是在 select 元素的父元素上设置 hx 属性,并使用
from
修饰符监听来自 select 元素的事件。在这种情况下,它可能看起来像:
<div class="custom-select"
hx-get="/customer/worklog/"
hx-target="#id_test"
hx-trigger="change from:#id_contractor" //or whatever selector points to the selector field.
hx-select="#id_test">
{% render_field form.contractor_object %}
</div>
即使实例化了 select2,这也应该可以工作。