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