Онлайн-клавиатура отключается при вводе текста - PullRequest
0 голосов
/ 25 июля 2011

Я использую слегка дополненную виртуальную клавиатуру из этого урока:

http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-keyboard-with-css-and-jquery/

Jquery:

$(function(){
var $write2 = $('#write2'),
    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;
    }

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

    // Delete
    if ($this.hasClass('delete')) {
        var html = $write2.html();

        $write2.html(html.substr(0, html.length - 1000));
        return false;
    }

    // Special characters
    if ($this.hasClass('symbol')) character = $('span:visible', $this).html();
    if ($this.hasClass('space')) character = $('span:visible', $this).html();
    if ($this.hasClass('tab')) character = $('span:visible', $this).html();
    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
    $write2.html(character+ "  " + $write2.html());
    }); });

Проблема в том, что когда я вручную изменяю текстовую область, клавиатура отключается. Я не совсем уверен, почему, и учебник не объяснил эту ошибку.

Спасибо.

1 Ответ

1 голос
/ 25 июля 2011

попробуйте использовать val вместо html

$write.val($write.val() + character)
...