参见http://jsbin.com/oqujuf/1/edit
$('input').keyup -> console.log @value
打印空当我在输入中写一个字母,我怎么能删除字母,因为它们是输入内的类型,我正在尝试这个:
@value = @value.replace(/D/, '')
但是它不工作,因为只要我写一个字母,那里的值返回空
<标题> 更新我是这样用的:
if !@value then @value = ''
这工作。但我现在的问题是,我想要验证只删除字母怎么做呢?
还有另一个问题:假设我使用一个从5到50的范围,如果我想写15,一旦我写了一个值消失,你怎么解决这两个问题?
标题>解决这个问题的一种方法,如果我理解正确的话,是通过拒绝任何不匹配数字的键码和其他一些键(如删除键、制表键和箭头键)来限制字段中的字符,如下所示:
$ ->
$('input').keypress (e)->
acceptedKeys = ([8,9].concat [48..57]).concat [46]
unless (e.which in acceptedKeys)
return false
注意使用keypress
事件而不是keyup
。如果要接受小数,可能还需要包含.
字符键码(46)。这种方法的一个缺点是,它还会阻止使用键盘快捷键将值粘贴到字段中,但是将允许使用鼠标使用上下文菜单粘贴任何字符。
jsbin here: http://jsbin.com/idukin/7/edit