我正在尝试在coffeescript / jquery
中实现以下内容- >当用户输入时,检查textBox是否为空(或者有“写评论...”文本),隐藏“添加评论”按钮。否则显示“添加评论”按钮
但是,我面临的问题是从文本框返回给我的val()始终是一个键击。
例如,如果我在框中输入'sad',则target.val()仅返回'sa'。
当我输入时,如何在文本框中获取最新值?
我的实施如下
events:
"keydown .comment_area": "commenting"
commenting: (e) ->
target = @$(e.currentTarget)
//target.val() is not returning me the latest character entered in the box
if $.trim(target.val()) == "" or $.trim(target.val()) =="Write a comment..."
//hide the 'add' button
@$('.add_comment').hide()
else
//show the 'add' button
@$('.add_comment').show()
答案 0 :(得分:5)
绑定到keyup
事件而不是keydown
。
答案 1 :(得分:0)
使用keyup
或keypress
事件:keydown
在计算机实际将字符放入文本框之前触发,而其他两个事件在此之后触发:{{1}之后,当钥匙被物理抬起时,keypress
。我认为,keyup
会触发插入文本框的每个字符(即,当您按住并且字符重复时,它会单独触发),而keypress
仅在键被提升后触发,因此如果您按住某个键,它只会在该键被提起后触发,而不是每个插入的字符都会被触发。
keyup
- > @$(e.currentTarget)
@$ e.currentTarget
- > $.trim(target.val())
另外,我注意到有时你用$.trim target.val()
引用$
,而有时候你正在使用全局jQuery - 这有什么理由吗?它似乎应该是一致的。