javascript - 通过 AJAX 呈现表单时,Javascript 不起作用
问题描述
我是 AJAX 和 Javascript on rails 的新手。
单击选项卡时,通过 AJAX 呈现相应的部分
当表单在没有 AJAX 的页面上呈现时,flatpickr 可以完美运行。
但是当我用 AJAX 渲染它(用表单替换 div 链接)时,flatpickr 不再工作
任务#新
<div id="single_event">
<%= link_to "Single_event", task_new_path, remote: true %>
</div>
任务#new.js.erb
$('#single_event a').parent().html("<%= j render 'single_event_form', meeting: @meeting %>")
single_event_form.html.erb
<div class="container">
<%= form_with(model: meeting, local: true, :html => {:id => "flatpickr-form-single"} ) do |form| %>
<div class="mb-6">
<%= form.label :body %>
<%= form.rich_text_area :body, class: 'form-control' %>
</div>
<div class="mb-6" style ="width: 30vw;">
<%= form.label :start_time, class: 'label' %>
<div class="flex items-center justify-between max-w-md">
<%= form.text_field :start_time, data: { behavior: "flatpickr" }, placeholder: "Date and time select ...", class: "form-control" %>
</div>
</div>
<div class="field" style ="width: 30vw;">
<%= form.label :end_time, class: 'label' %>
<div class="flex items-center justify-between max-w-md">
<%= form.text_field :end_time, data: { behavior: "flatpickr" }, placeholder: "Date and time select ...", class: "form-control required" %>
</div>
</div>
<%= form.submit class: "btn btn-primary text-base py-1.5 px-5", value: "Confirm" %>
<% end %>
</div>
flatpickt.js
import flatpickr from "flatpickr"
require("flatpickr/dist/flatpickr.css")
document.querySelector('#flatpickr-form-single')
.addEventListener("ajax:success", function(data, status, xhr) {
flatpickr("[data-behavior='flatpickr']", {
enableTime: false,
altInput: true,
altFormat: "F j, Y",
minDate: "today"
})
});
解决方案
您遇到的问题是由于flatpickr
仅在页面加载事件上初始化,您还需要在 AJAX 请求完成后对其进行初始化。
尝试将其添加到您flatpickt.js
的以下内容,并在querySelector选择器中替换为您的表单 ID:
...
document.addEventListener('turbolinks:load', function() {
document.querySelector('#single_event a')
.addEventListener("ajax:success", function(data, status, xhr) {
flatpickr("[data-behavior='flatpickr']", {
enableTime: false,
altInput: true,
altFormat: "F j, Y",
minDate: "today"
})
});
});
推荐阅读
- android - Android 原生 sip 堆栈是否支持 sip 上的视频?
- css - 使用 CSS id 而不是类可以在本地工作,但不能在带有 flexdashboard(和 R markdown?)的服务器上工作
- rust - rust ...为什么要将函数从 rs 文件导入到库中?- 无法解决:使用未声明的类型或模块“客户端”
- javascript - ionic 5 当子滚动到达底部时防止父滚动
- python - 将 tkinter 输入框文本保存为 JSON 格式
- elasticsearch - ElasticSearch Security 担心许可证?
- r - 如何将 quanteda 字典保存为 yaml 文件?
- python - Pytorch连体网络未收敛
- azure - 将 VHD 文件从 OS 磁盘导出到存储帐户
- c# - C# - NLog 记录同一调用的多行