За последние 24 часа нас посетили 17978 программистов и 1612 роботов. Сейчас ищут 969 программистов ...

Виртуальная клавиатура

Тема в разделе "PHP для новичков", создана пользователем raikage, 31 мар 2012.

  1. raikage

    raikage Активный пользователь

    С нами с:
    11 мар 2012
    Сообщения:
    48
    Симпатии:
    0
    Как можно сделать виртуальную клавиатуру на сайт , чисто из 8-9 букв!
    Чтобы оно всегда выводилось в правом верхнем углу, и можно было с помощью них писать в любой уголок сайта, где стоит курсор! Очень надо
    спасибо
    все перепробывал, никак
     
  2. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    В принципе можно сделать на jquery, какие то 8 букв, при клике, пускай подставляются куда то
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Вот, поразвлекался...

    Будет печатать буквы в область для ввода текста (input, textarea), которая в фокусе.
    Какие именно буквы будут на кнопках - легко настраивается.
    Работает в IE8, Opera, Firefox, Google Chrome. В других браузерах не проверял.
    Всегда находится в правом верхнем углу, при прокрутке страницы остаётся там.
    Если курсор мышки находится не над "клавиатурой" - она становится полупрозрачной и через неё видно, что на заднем плане. При наведении курсора становится полностью видимой.
    Для вставки в страничку нужно просто скопировать JS-скрипт в раздел head страницы. Можно сделать в виде отдельного подключаемого JS-файла при желании, я думаю.

    Вот пример полностью готовой HTML-страницы, чтобы сразу посмотреть, как работает:

    Код (Text):
    1. <html>
    2.     <head>
    3.         <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    4.         <title>Печатаем буквы мышкой</title>
    5.         <script language="JavaScript" type="text/javascript">
    6.             // Сюда написать буквы, которые нужно вводить
    7.             var letters = 'абвгдеж';
    8.             var field = false;
    9.             function enableWriter() {
    10.                 var i = false, div = false, j = 0, id = '', l = '', html = '', elems = new Array();
    11.                 var body = document.getElementsByTagName('body')[0];
    12.                 var inputs = body.getElementsByTagName('input');
    13.                 var texts = body.getElementsByTagName('textarea');
    14.                 for(i in inputs) {
    15.                     if(inputs[i].type === 'text' || inputs[i].type === 'password') {
    16.                         elems[j] = inputs[i];
    17.                         ++j;
    18.                     }
    19.                 }
    20.                 for(i in texts) {
    21.                     if(texts[i].type === 'textarea') {
    22.                         elems[j] = texts[i];
    23.                         ++j;
    24.                     }
    25.                 }
    26.                 for(i in elems) {
    27.                     id = 'id_' + i;
    28.                     elems[i].id = id;
    29.                     if(window.ActiveXObject)
    30.                         elems[i].attachEvent('onfocus', function(asd) { return function() { field = asd; }; }(id));
    31.                     else
    32.                         elems[i].addEventListener('focus', function(asd) { return function() { field = asd; }; }(id), false);
    33.                 }
    34.                 div = document.createElement('div');
    35.                 div.style.position = 'absolute';
    36.                 div.style.top = '0px';
    37.                 div.style.right = '0px';
    38.                 div.style.backgroundColor = 'white';
    39.                 div.style.border = 'solid 1px black';
    40.                 div.style.height = '21px';
    41.                 div.style.padding = '2px';
    42.                 div.id = 'writer';
    43.                 div.onmouseover = showWriter;
    44.                 div.onmouseout = hideWriter;
    45.                 for(i = 0; i < letters.length; ++i) {
    46.                     l = letters.substring(i, i + 1);
    47.                     html += '<input type="button" value="' + l + '" style="width: 21px; height: 21px;" onclick="javascript: writerPut(\'' + l + '\');">';
    48.                 }
    49.                 div.innerHTML = html;
    50.                 body.appendChild(div);
    51.                 myOpacity(div, 0.15);
    52.             }
    53.             function showWriter() {
    54.                 myOpacity(document.getElementById('writer'), 1);
    55.             }
    56.             function hideWriter() {
    57.                 myOpacity(document.getElementById('writer'), 0.15);
    58.             }
    59.             function topWriter() {
    60.                 document.getElementById('writer').style.top = getDocumentScrollTop() + 'px';
    61.             }
    62.             function writerPut(c) {
    63.                 if(field) {
    64.                     var el = document.getElementById(field);
    65.                     var pos = getCaretPos(el);
    66.                     el.value = el.value.substring(0, pos) + c + el.value.substring(pos);
    67.                     setCaretPos(el, pos + 1);
    68.                 }
    69.             }
    70.             function myOpacity(el, op) {
    71.                 if(window.ActiveXObject)
    72.                     el.style.filter = 'alpha(Opacity=' + parseInt(op * 100) + ')';
    73.                 else
    74.                     el.style.opacity = op;
    75.             }
    76.             function getDocumentScrollTop(doc) {
    77.                 doc = doc || document;
    78.                 var ret = (doc.documentElement.scrollTop > doc.body.scrollTop) ? doc.documentElement.scrollTop : doc.body.scrollTop;
    79.                 return ret;
    80.             }
    81.             function getCaretPos(el) {
    82.                 var CaretPos = 0;
    83.                 if(document.selection) {
    84.                     el.focus();
    85.                     var Sel = document.selection.createRange();
    86.                     Sel.moveStart('character', -el.value.length);
    87.                     CaretPos = Sel.text.length;
    88.                 } else if(el.selectionStart != undefined)
    89.                     CaretPos = el.selectionStart;
    90.                 return (CaretPos);
    91.             }
    92.             function setCaretPos(el, pos) {
    93.                 if(el.setSelectionRange) {
    94.                     el.focus();
    95.                     el.setSelectionRange(pos, pos);
    96.                 } else if(el.createTextRange) {
    97.                     var range = el.createTextRange();
    98.                     range.collapse(true);
    99.                     range.moveEnd('character', pos);
    100.                     range.moveStart('character', pos);
    101.                     range.select();
    102.                 }
    103.             }
    104.             window.onload = enableWriter;
    105.             window.onscroll = topWriter;
    106.         </script>
    107.     </head>
    108.     <body>
    109.         <form name="testForm" method="post" action="writer.html">
    110.             <table>
    111.                 <tr>
    112.                     <td>Первое поле</td>
    113.                     <td width="20">&nbsp;</td>
    114.                     <td><input type="text" name="first" value="" /></td>
    115.                 </tr>
    116.                 <tr>
    117.                     <td>Второе поле</td>
    118.                     <td>&nbsp;</td>
    119.                     <td><input type="text" name="second" value="" /></td>
    120.                 </tr>
    121.                 <tr>
    122.                     <td>Третье поле</td>
    123.                     <td>&nbsp;</td>
    124.                     <td><textarea name="third"></textarea></td>
    125.                 </tr>
    126.                 <tr>
    127.                     <td>&nbsp;</td>
    128.                     <td>&nbsp;</td>
    129.                     <td><input type="submit" value="Отправить" /></td>
    130.                 </tr>
    131.             </table>
    132.         </form>
    133.     </body>
    134. </html>
    ЗЫ: вознаграждение приветствуется :)))
     
  4. raikage

    raikage Активный пользователь

    С нами с:
    11 мар 2012
    Сообщения:
    48
    Симпатии:
    0
    спасибо большое, вознаграждение обьязательно будет! только вот можно еще 1 вопросик?? тм буквы встраиваются горизонтально, а мне бы вертикально вниз встраивались
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    1. Убрать строку
    Код (Text):
    1. div.style.height = '21px';
    2. Изменить строку:
    Код (Text):
    1. html += '<input type="button" value="' + l + '" style="width: 21px; height: 21px;" onclick="javascript: writerPut(\'' + l + '\');">';
    на:
    Код (Text):
    1. html += '<input type="button" value="' + l + '" style="width: 21px; height: 21px;" onclick="javascript: writerPut(\'' + l + '\');" \/><br \/>';