如何使用虚拟键盘写入聚焦输入?

时间:2018-02-05 15:18:16

标签: jquery html5 keyboard

我完成了一个为应用程序创建虚拟键盘的教程,我更喜欢不使用chrome o / s键盘。教程很棒,jquery比我预期的要简单得多。但是,它只是使用id作为选择器写入文本输入。我想让它直接输入到一个有针对性的输入中。我无法找到实现这一目标的方法。有人可以帮忙吗?

这是脚本:

 $(function(){
var $write = $('#write'),
    shift = false,
    capslock = false;

$('#keyboard li').click(function(){
    var $this = $(this),
        character = $this.html();


    if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) {
        $('.letter').toggleClass('uppercase');
        $('.symbol span').toggle();

        shift = (shift === true) ? false : true;
        capslock = false;
        return false;
    }

            if ($this.hasClass('capslock')) {
        $('.letter').toggleClass('uppercase');
        capslock = true;
        return false;
    }

    if ($this.hasClass('delete')) {
        var html = $write.html();

        $write.html(html.substr(0, html.length - 1));
        return false;
    }


    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";


    if ($this.hasClass('uppercase')) character = character.toUpperCase();


    if (shift === true) {
        $('.symbol span').toggle();
        if (capslock === false) $('.letter').toggleClass('uppercase');

        shift = false;
    }

    $write.html($write.html() + character);
});
});

我有一些输入,我希望用户能够使用此键盘进行编辑,以下是这些的html标记:

    <input id="productC"  maxlength="3" class="menu" value="$8">
    <input id="priceCA" maxlength="3" class="menu" value="$10">
    <input id="priceCB" maxlength="3" class="menu" value="$8">
    <input id="priceCC" maxlength="3" class="menu" value="$12">

作为一个注释,我试图将$ write变量切换到菜单类。它不起作用。

1 个答案:

答案 0 :(得分:0)

替换

$write.html($write.html() + character);

$(':focus').html($(':focus').html() + character);

$(':focus') jQuery选择器将返回当前的焦点元素。您还应该检查焦点元素是否是输入。