0

http://jsbin.com/oqujuf/1/edit

$('input').keyup -> console.log @value

当我在输入中写一个字母时打印为空,我如何删除在输入中输入的字母,我正在尝试这个:

@value = @value.replace(/\D/, '')

但是它不起作用,因为一旦我写信,那里的值就会返回空。

更新

我用这种方式:

if !@value then @value = ''

这行得通。但我现在的问题是,我希望验证只删除字母我怎么能这样做?

还有一个问题:假设我使用5到50的范围,如果我想写15,我一写1值就消失了,你会如何解决这两个问题?

4

1 回答 1

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

于 2013-05-08T14:01:24.083 回答