Weel Keypad 使用示例
Weel Keypad

最基本的用法

不需要任何额外的参数就可以将一个初始状态的“键盘”载入到页面中,点击动作栏的按钮操作显示/隐藏。

// 使用 new 操作符得到一个实例
var kypd = new Keypad()

kypd.toggle() // 切换
kypd.show() // 显示
kypd.hide() // 隐藏

绑定 & 监听 input 元素

激活下面的输入框触发键盘。提示: Keypad 不会阻止移动端浏览器对于 input 元素的默认事件而导致行为或者 显示异常(放大输入框、元素漂移),需要避免这种的话建议设置 'readonly',具体参考下一示例。

// 使用 new 操作符得到一个实例
var kypd = new Keypad({
  // 需要监听的 input 元素选择器
  el: '#listened-input'
})

绑定存值的 input 元素

点击下面的六位数密码框会激活键盘,输入的值则会被存入它下方那个只读属性的 input 中。

var input = document.querySelector('#readonly-input')
var password = document.querySelector('#password')
var items = password.querySelectorAll('i')
var kypd = new Keypad({
  input: input,
  onend: function (key) {
    var code = key[2]
    var n = input.value.length + 1

    if (code === 'backspace') {
      n--

      if (n === 0) return kypd.hide()
      if (n > items.length) n = items.length - 1

      items[n - 1].classList.remove('on')

      return false
    }

    if (n > items.length) {
      kypd.hide()
      return true
    }

    if (n === items.length) {
      items[n - 1].classList.add('on')
      return kypd.hide()
    }

    items[n - 1].classList.add('on')
  }
})

password.addEventListener('click', ev => kypd.show(), false)

其它选项

在此页面进行一些选项的演示,可结合浏览器的控制台查看对应的 HTML 结构。
按键名称:
等待……
按键值:
等待……
按键命令:
等待……

主题颜色

控制显示

切换键盘


// 使用回调函数的方式配置选项来实例化 Keypad
var kypd = new Keypad(function (options) {
  options.dark = true // 使用深色主题
  options.name = 'qwer' // 键盘布局修改为 QWER
  options.hide = true // 点击键盘区域以外的页面部分隐藏

  // 绑定按键按下状态
  options.onstart = function (key) {
    id('options-print-1').textContent = key[0] // 文本
    id('options-print-2').textContent = key[1] // 值
    id('options-print-3').textContent = key[2] // 命令
  }

  // 返回修改后的选项
  return options
})

var theme = {
  dark: id('theme-color-1'),
  light: id('theme-color-2')
}

Object.entries(theme).forEach(function (action) {
  var name = action[0]
  var target = action[1]

  target.addEventListener('click', function (ev) {
    ev.stopPropagation()
    kypd.dark(name === 'dark')
  }, false)
})

var control = {
  toggle: id('control-1'),
  show: id('control-2'),
  hide: id('control-3')
}

Object.entries(control).forEach(function (action) {
  var name = action[0]
  var target = action[1]

  target.addEventListener('click', function (ev) {
    ev.stopPropagation()
    kypd[name]()
  }, false)
})

var layout = {
  number: id('layout-1'),
  qwer: id('layout-2')
}

Object.entries(layout).forEach(function (action) {
  var name = action[0]
  var target = action[1]

  target.addEventListener('click', function (ev) {
    ev.stopPropagation()
    kypd.hide()
    kypd.show(name)
  }, false)
})

function id (id) {
  return document.querySelector('#' + id)
}