diff --git a/app/assets/javascripts/answerbox/comment.coffee b/app/assets/javascripts/answerbox/comment.coffee index 4b93cdb2..7c9e5909 100644 --- a/app/assets/javascripts/answerbox/comment.coffee +++ b/app/assets/javascripts/answerbox/comment.coffee @@ -13,8 +13,14 @@ $(document).on "click", "button[name=ab-comments]", -> commentBox.slideUp() btn[0].dataset.state = 'hidden' +isComposing = false +compositionHasJustEnded = false $(document).on "keyup", "input[name=ab-comment-new]", (evt) -> + if isComposing or compositionHasJustEnded + compositionHasJustEnded = false + return + input = $(this) aid = input[0].dataset.aId ctr = $("span#ab-comment-charcount-#{aid}") @@ -49,6 +55,18 @@ $(document).on "keyup", "input[name=ab-comment-new]", (evt) -> complete: (jqxhr, status) -> input.removeAttr 'disabled' +# IME Return key handling +$(document).on "compositionstart", "input[name=ab-comment-new]", (evt) -> + isComposing = true + +$(document).on "compositionend", "input[name=ab-comment-new]", (evt) -> + isComposing = false + compositionHasJustEnded = true + +$(document).on "keydown", "input[name=ab-comment-new]", (evt) -> + # 229 is a special keyCode for events processed by an IME + # https://developer.mozilla.org/en-US/docs/Web/API/Document/keyup_event + compositionHasJustEnded = false unless event.which == 229 # character count $(document).on "input", "input[name=ab-comment-new]", (evt) ->