Jquery重复功能时使用自定义键盘
Jquery repeating function when using custom keyboard
我希望我在这里错过了一些非常简单的东西,我使用了下面教程中的代码:
http://code.tutsplus.com/tutorials/creating - -键盘- - css和jquery -网- 5774
该项目是有一个弹出式键盘的触摸屏,我做了一些修改的各种原因,每次我点击一个单独的文本字段和输入键,我得到双倍的字符在该领域。
下面的代码:<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="~/Content/keyboard_css.css" rel="stylesheet" />
</head>
<body>
<div id="container">
<label>Client Name</label><div class="tbx" id="tbx_1" contenteditable></div>
<div class="tbx" id="tbx_2" contenteditable></div>
<div class="tbx" id="tbx_3" contenteditable></div>
<div class="tbx" id="tbx_4" contenteditable></div>
<div class="tbx" id="tbx_5" contenteditable></div>
<ul id="keyboard">
<li class="symbol"><span class="off">`</span><span class="on">~</span></li>
<li class="symbol"><span class="off">1</span><span class="on">!</span></li>
<li class="symbol"><span class="off">2</span><span class="on">@@</span></li>
<li class="symbol"><span class="off">3</span><span class="on">#</span></li>
<li class="symbol"><span class="off">4</span><span class="on">$</span></li>
<li class="symbol"><span class="off">5</span><span class="on">%</span></li>
<li class="symbol"><span class="off">6</span><span class="on">^</span></li>
<li class="symbol"><span class="off">7</span><span class="on">&</span></li>
<li class="symbol"><span class="off">8</span><span class="on">*</span></li>
<li class="symbol"><span class="off">9</span><span class="on">(</span></li>
<li class="symbol"><span class="off">0</span><span class="on">)</span></li>
<li class="symbol"><span class="off">-</span><span class="on">_</span></li>
<li class="symbol"><span class="off">=</span><span class="on">+</span></li>
<li class="delete lastitem">DEL</li>
<li class="tab">TAB</li>
<li class="letter">q</li>
<li class="letter">w</li>
<li class="letter">e</li>
<li class="letter">r</li>
<li class="letter">t</li>
<li class="letter">y</li>
<li class="letter">u</li>
<li class="letter">i</li>
<li class="letter">o</li>
<li class="letter">p</li>
<li class="symbol"><span class="off">[</span><span class="on">{</span></li>
<li class="symbol"><span class="off">]</span><span class="on">}</span></li>
<li class="symbol lastitem"><span class="off">'</span><span class="on">|</span></li>
<li class="capslock">CAPS</li>
<li class="letter">a</li>
<li class="letter">s</li>
<li class="letter">d</li>
<li class="letter">f</li>
<li class="letter">g</li>
<li class="letter">h</li>
<li class="letter">j</li>
<li class="letter">k</li>
<li class="letter">l</li>
<li class="symbol"><span class="off">;</span><span class="on">:</span></li>
<li class="symbol"><span class="off">'</span><span class="on">"</span></li>
<li class="return lastitem">ENTER</li>
<li class="left-shift">SHIFT</li>
<li class="letter">z</li>
<li class="letter">x</li>
<li class="letter">c</li>
<li class="letter">v</li>
<li class="letter">b</li>
<li class="letter">n</li>
<li class="letter">m</li>
<li class="symbol"><span class="off">,</span><span class="on"><</span></li>
<li class="symbol"><span class="off">.</span><span class="on">></span></li>
<li class="symbol"><span class="off">/</span><span class="on">?</span></li>
<li class="hide">HIDE</li>
<li class="space lastitem"> </li>
</ul>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</body>
</html>
<script>
$( document ).ready(function() {
// Hide Keyboard on load
$('#keyboard li').hide();
});
$(function(){
// Show Keyboard on click
$('.tbx').click(function () {
$('#keyboard li').show();
inputBox = $(this).attr('id');
//alert(inputBox);
i = '#';
GetId = i.concat(inputBox);
$write = $(GetId),
shift = false,
capslock = false;
$('#keyboard li').click(function () {
$this = $(this),
character = $this.html(); // If it's a lowercase letter, nothing happens to this variable
// Shift keys
if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) {
$('.letter').toggleClass('uppercase');
$('.symbol span').toggle();
shift = (shift === true) ? false : true;
capslock = false;
return false;
}
// Hide Keyboard
if ($this.hasClass('hide')) {
$('#keyboard li').hide();
return false;
}
// Caps lock
if ($this.hasClass('capslock')) {
$('.letter').toggleClass('uppercase');
capslock = true;
return false;
}
// Delete
if ($this.hasClass('delete')) {
html = $write.html();
$write.html(html.substr(0, html.length - 1));
return false;
}
// Special characters
if ($this.hasClass('symbol')) character = $('span:visible', $this).html();
if ($this.hasClass('space')) character = ' ';
if ($this.hasClass('tab')) character = "'t";
if ($this.hasClass('return')) character = "'n";
// Uppercase letter
if ($this.hasClass('uppercase')) character = character.toUpperCase();
// Remove shift once a key is clicked.
if (shift === true) {
$('.symbol span').toggle();
if (capslock === false) $('.letter').toggleClass('uppercase');
shift = false;
}
// Add the character
$write.html($write.html() + character);
});
});
});
</script>'
每次点击输入时都要点击#keyboard li
。只需在点击之前添加unbind(), $('#keyboard li').unbind().click(function ()
首先,我建议您修复您的代码,在需要时添加var
并正确嵌套(如果确实需要)
$(document).ready(function () {
var $write, shift, capslock; //declared globally
// Hide Keyboard on load
$('#keyboard li').hide();
$('.tbx').click(function () {
$('#keyboard li').show();
var inputBox = $(this).attr('id'),
i = '#',
GetId = i.concat(inputBox);
$write = $(GetId);
shift = false;
capslock = false;
});
$('#keyboard li').click(function () {
var $this = $(this),
character = $this.html(); // If it's a lowercase letter, nothing happens to this variable
// Shift keys
if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) {
$('.letter').toggleClass('uppercase');
$('.symbol span').toggle();
shift = (shift === true) ? false : true;
capslock = false;
return false;
}
// Hide Keyboard
if ($this.hasClass('hide')) {
$('#keyboard li').hide();
return false;
}
// Caps lock
if ($this.hasClass('capslock')) {
$('.letter').toggleClass('uppercase');
capslock = true;
return false;
}
// Delete
if ($this.hasClass('delete')) {
var html = $write.html();
$write.html(html.substr(0, html.length - 1));
return false;
}
// Special characters
if ($this.hasClass('symbol')) character = $('span:visible', $this).html();
if ($this.hasClass('space')) character = ' ';
if ($this.hasClass('tab')) character = "'t";
if ($this.hasClass('return')) character = "'n";
// Uppercase letter
if ($this.hasClass('uppercase')) character = character.toUpperCase();
// Remove shift once a key is clicked.
if (shift === true) {
$('.symbol span').toggle();
if (capslock === false) $('.letter').toggleClass('uppercase');
shift = false;
}
// Add the character
$write.html($write.html() + character);
});
});
然后,当你所有的代码都是正确的和可读的,你可以检查它寻找错误
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- jQuery自定义验证比较多个输入的序列
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 在wordpress一定时间后更改自定义字段
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- 自定义函数中的光标位置
- 用于检查数组中是否存在元素的javascript自定义方法
- 使用javascript为web应用程序自定义键盘快捷键
- 如何使用自定义键盘事件和keyCode更改输入/textarea值
- JavaScript:如何清除我的自定义键盘映射并使用默认映射
- 使用自定义jQuery滑块和键盘键检测事件
- 如何实现用户自定义的键盘快捷键(在javascript/网络上)
- 在html4中自定义键盘选项卡顺序
- 如何在aptana3中自定义我自己的代码片段后启用键盘事件
- 使用javascript和jquery为textarea创建自定义键盘布局
- 在自定义js中添加键盘箭头导航
- android上的自定义html/javascript键盘速度太慢
- 如何更改mottie虚拟键盘中自定义键的显示名称
- Jquery重复功能时使用自定义键盘