Javascript TurboLink-仅在计划发布时显示datetimepicker-默认情况下隐藏

Javascript TurboLink-仅在计划发布时显示datetimepicker-默认情况下隐藏,javascript,jquery,ruby-on-rails,turbolinks,Javascript,Jquery,Ruby On Rails,Turbolinks,我有一个_-formpartial的订单来创建/编辑帖子。此表单有一个用于设置post状态的下拉列表,因此如果用户将状态设置为Scheduled,则会显示datetimepicker以选择日期,否则默认情况下应隐藏该日期(即状态为“Draft”或“Published”) 当用户第一次访问页面时会出现问题,因此默认情况下,状态设置为草稿(如预期),但是datetimepicker是可见的,而datetimepicker不应该是可见的(请记住,只有当用户选择安排帖子时,它才应该是可见的)。如果在查看

我有一个_-formpartial的订单来创建/编辑帖子。此表单有一个用于设置post状态的下拉列表,因此如果用户将状态设置为
Scheduled
,则会显示datetimepicker以选择日期,否则默认情况下应隐藏该日期(即状态为“Draft”或“Published”)

当用户第一次访问页面时会出现问题,因此默认情况下,
状态
设置为
草稿
(如预期),但是datetimepicker是可见的,而datetimepicker不应该是可见的(请记住,只有当用户选择安排帖子时,它才应该是可见的)。如果在查看fomr时此时刷新页面,则日期选择器将消失

原始版本也可以在这里找到


此问题可能是由TurboLink引起的。我也尝试过使用
jquery turbolinks
gem,但没有解决这个问题。有没有办法解决这个问题?

我不擅长编写咖啡脚本并向您展示javascript代码

var ready = function(){
  changeVisibility ($("#post_status :selected").text());
  $("#post_status").on("change", function(e){
  changeVisibility $(this).find(":selected").text();
 });
}
$document.ready(ready);
$document.on('turbolinks:load',ready);
请添加此代码

gem 'turbolinks', '~>5' 

如果您想使用TurboLink,请务必记住,它的工作原理是根本没有实际的页面加载,它只是执行一个XHR请求,然后在
中替换HTML,同时保存旧的
以实现后退按钮

这意味着不会执行任何脚本,也不会得到任何文档加载/就绪事件等。
$(handler)
与“页面的文档对象模型(DOM)变得可以安全操作”相同,并且仅在页面加载时运行

Turbolinks在
文档
上触发
Turbolinks:load
,因此使用
$(文档)。在('Turbolinks:load',handler)
上执行所有此类操作

您还需要知道,它保存了旧的
DOM和脚本所做的任何事情的副本,因此它使用的任何内存以及上一个“页面”中的任何其他JavaScript(如超时和动画帧等)都会保持运行。您使用它在加载时基于CSS选择器实现了显示/隐藏


这包含了更多信息以及库本身。

您的代码不包含turbo链接大多数代码不包含turbo链接,因为turbo链接会改变页面之间正常链接的行为。刷新然后加载“正常”。不确定我是否理解并更正您的答案,但您建议将我在
jQuery->
中的代码放在
$(document.ready()中函数,正确吗?否
$(文档)。ready
$的另一个别名。ready
,请检查我链接的jQuery文档。如果您使用的是turbolinks,则在大多数情况下使用
turbolinks:load
事件,但您一定要阅读Rails指南和turbolinks自己的文档,因为还有其他陷阱。
gem 'turbolinks', '~>5'