Sha256: 9dfb9d2e4ca17bcf7a2c8bf85de5a922b15d97bc0f18c0778e28ca86ec424f3d

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

#= require ultimate/improves/typed-fields

Ultimate.Backbone.Views ||= {}

class Ultimate.Backbone.Views.TypedFields extends Ultimate.Backbone.View

  selector: "input:text[data-data-type], input:text[data-regexp-mask]"

  events: ->
    "keypress   selector": "onKeyPress"
    "change     selector": "onChange"
    "paste      selector": "onPasteOrDrop"
    "drop       selector": "onPasteOrDrop"

  viewOptions: ["selector"]

  onKeyPress: (event) ->
    if event.metaKey
      @onPasteOrDrop event
      return true
    return true  unless event.charCode
    jField = $(event.currentTarget)
    oldValue = jField.val()
    newValue = oldValue.substring(0, @selectionStart) + String.fromCharCode(event.charCode) + oldValue.substring(@selectionEnd)
    return false  unless jField.getRegExpMask().test(newValue)
    jField.data "value", newValue

  onChange: (event) ->
    jField = $(event.currentTarget)
    if jField.getRegExpMask().test(jField.val())
      jField.data "value", jField.val()
    else
      jField.val jField.data("value")

  onPasteOrDrop: (event) ->
    setTimeout ( -> $(event.currentTarget).trigger "change", arguments ), 100



Ultimate.Backbone.createJQueryPlugin? "typedFields", Ultimate.Backbone.Views.TypedFields

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ultimate-base-0.2.3.2 app/assets/javascripts/ultimate/backbone/views/typed-fields.js.coffee
ultimate-base-0.2.3 app/assets/javascripts/ultimate/backbone/views/typed-fields.js.coffee