如何使用相同的热键打开和关闭模态

时间:2014-01-29 00:04:23

标签: javascript jquery coffeescript

我正在尝试使用相同的热键打开和关闭模态窗口:

if !$('#new-stuff').length or $('#new-stuff').is(':hidden')
  $(document).keydown( (e) ->
    if e.altKey && e.which == 65
      e.preventDefault
      modal.open(
        content: '<input type="text" placeholder="New stuff here!" id="new-stuff"><br /><input type="submit" value="Do stuff!">'
      )
  ).keyup( ->
    $('#new-stuff').focus()
  )
else
  $(document).keyup( (e) ->
    if e.altKey && e.which == 65
      e.preventDefault()
      modal.close()
  )

当我按下alt + A时,模态打开,焦点在输入上。但当我再次按alt + A时,它会再次关注输入,但不会关闭。

!$('#new-stuff').length or $('#new-stuff').is(':hidden')

两者都是false,但$('#new-stuff').focus()正在发生。为什么呢?
以及如何使用alt + A关闭模态?

更新
这是工作代码:

$(document).keydown( (e) ->
  if e.altKey && e.which == 65
    if $('#new-stuff').is(':visible')
      e.preventDefault()
      modal.close()
    else
      e.preventDefault
      modal.open(
        content: '<input type="text" placeholder="New stuff here!" id="new-stuff"><br /><input type="submit" value="Do stuff!">'
      )
).keyup( ->
  $('#new-stuff').focus() if $('#new-stuff').is(':visible')
)

1 个答案:

答案 0 :(得分:1)

看起来你需要将条件放在事件函数中。像这样:

$(document).keyup( (e) ->
  if e.altKey && e.which == 65
    if $('#new-stuff:visible)')
      # hide it
    else
      # show it
 )