Автор Тема: Помощ за пускане на виртуална клавиатура с бутон  (Прочетена 2430 пъти)

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
  Здравейте какво да променя за да направя тази http://www.greywyvern.com/code/javascript/keyboard#bookmarklet виртуална клавиатура да се показва при натискането на бутон, а не както е сега  ???

Ето и JS кода: http://78.130.233.163/keyboard.js

Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Ако целта ти е, когато натиснеш някакъв клавиш в input полето, да се показва клавиатурата, то можеш да добавиш jQuery библиотеката (ако не си го направил вече), и да сложиш подобен код преди затварящия </body> таг:
Код
GeSHi (Javascript):
  1. <script type="text/javascript">
  2. $('.keyboardInput').bind('keypress', function(e) {
  3.    if(e.keyCode==13){
  4.        VKI_show(this);
  5.    }
  6. });
  7. </script>
По този начин виртуалната клавиатура ще се отваря, когато се натисне клавишът Enter в поле от класа keyboardInput.

P.S.: Тъй като се сетих, че може би искаш натискането на клавиша на клавиатурата за показване на виртуалната клавиатура да действа глобално за страницата, а не само когато си го натиснал вътре в input полето, ето как трябва да стане този вариант:
Код
GeSHi (Javascript):
  1. <script type="text/javascript">
  2. $(document).bind('keypress', function(e) {
  3.    if(e.keyCode==13){
  4.        VKI_show(document.getElementById('keyboardInput'));
  5.    }
  6. });
  7. </script>
където keyboardInput е id-то на input елемента, към който трябва да се отвори виртуалната клавиатура при натискане на клавиша Enter. Не забравяй да добавиш id атрибут към нужното input поле.
Вероятно забелязваш, че във VKI_show() подавам елемента с чист javascript, а не с jQuery. Налага се, тъй като кодът на тази клавиатура не е jQuery ориентиран, и за да подадеш елемента с jQuery ще се наложи солидно пренаписване на keyboard.js файла.
« Последна редакция: Mar 08, 2011, 12:02 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Бачка страхотно само че искам не като се натисне ентер ами ....
<input id="d_clip_button" type="button" class="buttonb" onClick=""> и като се кликне да показва клавиатурата  :)
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
А, ти си искал най-лесното :) Не ти трябва jQuery за целта:
Код
GeSHi (HTML):
  1. <input id="d_clip_button" type="button" class="buttonb" onClick="VKI_show(this);">
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Така пробвах одеве след първия ти пост но нестава  ???
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Опа, извинявай, не обърнах внимание, че си дал input бутон, на инерция го приех за input текст. Докато се разберем, поне попълнихме няколко комбинации за цвят :)
Така. Не слагай бутона директно в HTML-а, добавянето му е предвидено в самия keyboard.js. В HTML-а сложи само текстовото input поле, като му сложи клас "keyboardInput":
Код
GeSHi (HTML):
  1. <input type="text" value="" class="keyboardInput" />
След това отваряш keyboard.js файла (говоря за големия файл), и от ред 1072 до ред 1082 ще видиш такова парче код:
Код
GeSHi (Javascript):
  1. var keybut = document.createElement('img');
  2.     keybut.src = self.VKI_imageURI;
  3.     keybut.alt = self.VKI_i18n['01'];
  4.     keybut.className = "keyboardInputInitiator";
  5.     keybut.title = self.VKI_i18n['01'];
  6.     keybut.elem = elem;
  7.     keybut.onclick = function(e) {
  8.       e = e || event;
  9.       if (e.stopPropagation) { e.stopPropagation(); } else e.cancelBubble = true;
  10.       self.VKI_show(this.elem);
  11.     };
Замени го с това:
Код
GeSHi (Javascript):
  1. var keybut = document.createElement('input');
  2.     keybut.type = "button";
  3.     keybut.id = "d_clip_button";
  4.     keybut.className = "buttonb";
  5.     keybut.value = "Ime na butona";
  6.     keybut.title = self.VKI_i18n['01'];
  7.     keybut.elem = elem;
  8.     keybut.onclick = function(e) {
  9.       e = e || event;
  10.       if (e.stopPropagation) { e.stopPropagation(); } else e.cancelBubble = true;
  11.       self.VKI_show(this.elem);
  12.     };
Ако искаш, замени въведените id, className и value. Даже, ако ползваш добавените езикови възможности, може да замениш стойността във value със стринг от езикова променлива, по подобие на title от реда под него.
Така до input текстовите полета от клас "keyboardInput" ще ти се генерира желаният бутон, вместо изображението от примерния сайт.
Ако не искаш името на класа на input текстовото поле да е "keyboardInput" или ако въобще не искаш да се прихваща по класа (а, например, по id), тогава отиваш на ред 1112 в keyboard.js (номерът на реда съответства, ако още не си направил по-горната промяна), където имаш такъв код:
Код
GeSHi (Javascript):
  1. if (ex.className.indexOf("keyboardInput") > -1) VKI_attach(ex);
Ако искаш само да смениш името на класа, смени "keyboardInput" с каквото искаш. Ако искаш да ползваш id-то на input текстовото поле за прихващане, вместо класа му, замени "className" с "id".
Ей такива неща :)
« Последна редакция: Mar 09, 2011, 02:00 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти