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