【发布时间】:2020-05-16 01:24:44
【问题描述】:
我编写了一个简单的咖啡脚本来根据下拉列表中的选定选项显示/隐藏日期选择器,它可以工作,但它有一个小缺陷 - 在我在日期选择器中选择日期并提交表单后,日期选择器消失了,我相信,这可能会让最终用户感到有些困惑。为了解决这个问题,我编写了额外的函数并在“窗口加载”时执行它,但这会破坏我的 Jasmine 测试,以至于整个测试套件甚至无法在本地和 CI 运行。
这是我写的代码。
- 根据从下拉列表中选择的值打开/关闭日期选择器的功能
$(document).on 'ready page:load page:restore', ->
$('body').on 'change', '.filter_status', (ev) ->
selected = ev.target.value
if selected == 'option_1' || selected == 'option_2'
$('#datepicker').show()
else $('#datepicker').hide()
- 检查仍然选择了哪个选项并打开/关闭日期选择器的功能
toggleDatepicker = ->
selected = $('.filter_status #status').children('option:selected').val()
if selected == 'option_1' || selected == 'option_2'
$('#datepicker').show()
在窗口加载时执行函数。
window.onload = toggleDatepicker
这很好,但是当我去http://localhost:3000/specs 运行 JS 测试时没有任何反应。我有超过 200 个测试,甚至没有一个运行,我所看到的只是一个空白页。它还破坏了我的 CI 测试构建,构建挂起。
你有什么想法我可以解决这个问题吗?
这是整个脚本。
$(document).on 'ready page:load page:restore', ->
$('body').on 'change', '.filter_status', (ev) ->
selected = ev.target.value
if selected == 'option_1' || selected == 'option_2'
$(#datepicker').show()
else $('#datepicker').hide()
toggleDatepicker = ->
selected = $('.filter_status #status').children('option:selected').val()
if selected == 'option_1' || selected == 'option_2'
$('#datepicker').show()
window.onload = toggleDatepicker
【问题讨论】:
标签: javascript jquery coffeescript