Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

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

Сообщения:  [1-10]   [11-13] 

 
 автор: selma   (22.02.2013 в 02:00)   письмо автору
 
   для: confirm   (21.02.2013 в 10:39)
 

Спасибо вам огромное, теперь все условия соблюдены в полной мере. Большего не нужно. :)

  Ответить  
 
 автор: confirm   (21.02.2013 в 10:39)   письмо автору
 
   для: selma   (21.02.2013 в 02:23)
 

Это из-за потери фокуса, так как фокус получает виртуальная клавиатура, и "ваш Хром", теряет фокус. Удалите у полей формы событие onfocus, добавьте событие onclick, поместив в него вызов функции showIcon(this). А функцию перепишите так:
function showIcon(e){
   e = e.parentNode.lastChild;
   if(ico == e) return false;
   if(ico) ico.style.visibility = 'hidden';
   ico = e;
   e.style.visibility = 'visible';
}

PS. Все эти глюки видимо связаны с некорректной работой самого скрипта в зависимости от браузера. Я не анализировал его весь, но можете убедиться, что поведение клавиатуры разница от браузера к браузеру, например, поведение той же иконки клавиатуры после нажатия Enter.
И еще, заметьте, что скрытие иконки по щелчку вне ее или поля которому она принадлежит, будет работать корректно только для строк таблицы содержащих эту пару элементов. То есть, например, если щелкнуть по "звездочке" первой строки таблицы, то иконка тоже не исчезнет. Писать на "все случаи жизни" я не стал, для этого нужно знать все условия использования этого "шедевра". )

  Ответить  
 
 автор: selma   (21.02.2013 в 02:23)   письмо автору
 
   для: confirm   (20.02.2013 в 12:04)
 

Все работает, спасибо огромное, но теперь, если набрать с помощью клавиатуры что либо, нажать на ней enter, то потом сразу в это же поле нельзя ничего написать, пока не кликнешь на другом поле и не вернешься на предыдущее (клавиатура не появляется)

  Ответить  
 
 автор: confirm   (20.02.2013 в 12:04)   письмо автору
 
   для: selma   (20.02.2013 в 10:36)
 

Да, в webkit так будет, это из-за onblur. Сделайте так:
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 

<link rel="stylesheet" type="text/css" href="keyboard.css">
<script src="keyboard.js" type="text/javascript" ></script>

<script>
var ico = null;
function showIcon(e){
   if(ico) ico.style.visibility = 'hidden';
   ico = e.parentNode.lastChild;
   ico.style.visibility = 'visible';
}

function hideIcon(e) {
    e = e.target || e.srcElement;
    if(e.parentNode.tagName!='TD') {
       ico.style.visibility = 'hidden';
       ico = null;
    }
}   
</script>
</head>
<body onclick="hideIcon(event)">
<form method='post' action='index.php'>
<table>
<tr>
  <td colspan=2 style='border-bottom: 1px solid #000; padding-bottom:5px;'>Поля помеченые <b style='color:red;'>*</b>, обязательны к заполнению:</td>
</tr>
<tr>
  <td>Фамилия</td>
  <td><input type='text' name='surn' maxlength='50' onfocus="showIcon(this)" class="keyboardInput" /></td>
</tr>
<tr>
  <td>Имя</td>
  <td><input type='text' name='name' maxlength='50' onfocus="showIcon(this)" class="keyboardInput" /></td>
</tr>
  
<tr>
  <td colspan=2><input type='submit' name='send' value='Отправить обращение' /></td>
</tr>
</table>
</form>
</body>
</html>

Если допустимо не скрывать иконку клавиатуры у последнего выбранного поля, то можно удалить обработчик onclick тела документа и функцию hideIcon().

  Ответить  
 
 автор: selma   (20.02.2013 в 10:36)   письмо автору
 
   для: confirm   (20.02.2013 в 10:28)
 

Иконка появляется, но по нажатию на нее, она исчезает и клавиатура не открывается:(

>>>Если предполагается использование только виртуальной клавиатуры, то логично для полей формы в обработчике onkeyup очищать их значения, а не осуществлять поиск и вырезание недопустимого.

C этим согласна, сделаю.

  Ответить  
 
 автор: confirm   (20.02.2013 в 10:28)   письмо автору
 
   для: selma   (20.02.2013 в 09:55)
 

Я же вам писал, что ваши попытки присвоения класса ни к чему не приведут, так как иконки для полей формы устанавливаются при загрузке скрипта.

Если предполагается использование только виртуальной клавиатуры, то логично для полей формы в обработчике onkeyup очищать их значения, а не осуществлять поиск и вырезание недопустимого.

Код в обработчике нужно смотреть, а в нем видно (если вы не можете сценарии читать), что после каждого поля добавляется изображение иконки с классом keyboardInputInitiator. Открываем файл стилей клавиатуры и ищем этот селектор, и добавляем в него правило visibility: hidden.

Добавляем обработчики для полей:

onblur="hideIcon()" onfocus="showIcon(this)"

и функции:
<script>
var ico = null;
function showIcon(e){
   if(ico) ico.style.visibility = 'hidden';
   ico = e.parentNode.lastChild;
   ico.style.visibility = 'visible';
}

function hideIcon() {
    ico.style.visibility = 'hidden';
    ico = null;
}   
</script>

  Ответить  
 
 автор: selma   (20.02.2013 в 09:55)   письмо автору
 
   для: confirm   (20.02.2013 в 09:52)
 

я уже удалила все языки, это все не важно.
Важно понять, как на деле реализовать сокрытие иконки, и показывать при событии onFocus
А еще былобы лучше, не показывать иконку вовсе, а по нажатию на поле, сразу открывать клавиатуру.
У меня совсем нет вариантов, я пробовала через функцию, добавлять class, но не выходит.
Видать придется выводить сразу все иконки, ко всем полям :(


Все это дело для тач монитора. Ввводить можно, если присоединить обычную клавиатуру, но пользователи будут использовать только тач.скрин.

  Ответить  
 
 автор: confirm   (20.02.2013 в 09:52)   письмо автору
 
   для: selma   (20.02.2013 в 09:33)
 

Если разрешена только кириллица, то можно спокойно выкинуть из кода клавиатуры все языки, как и список выбора их (сделать это просто, массивы языков указаны в начале кода, оставить кириллицу, а остальное удалить несложно).

А ввод разрешен только с виртуальной клавиатуры или нет?

  Ответить  
 
 автор: selma   (20.02.2013 в 09:33)   письмо автору
 
   для: confirm   (20.02.2013 в 08:20)
 

>На вопрос так и не ответили - для чего обработчик onkeyup у полей формы?

Убрать забыла, изначально для отсеивания на лету запрещенных символов. Т.е в данном случае разрешены кирилические символы

  Ответить  
 
 автор: confirm   (20.02.2013 в 08:20)   письмо автору
 
   для: selma   (20.02.2013 в 08:10)
 

Плачевно, конечно, но такова селяви - хотите жить, крутитесь. )
Сделайте так - откройте страницу свою (уберите вашу функцию и ее вызовы из полей), например, в FF. Просмотрите html-код ее в отладчике. Обратите внимание на элементы иконок этой клавиатуры.
Станет понятным, что нужно скрыть после инициализации клавиатуры, и открывать по фокусу элемента. Вот это можете и на jQuery сделать, если иного не дано. Попробуйте хотя бы, не получится, поможем.

На вопрос так и не ответили - для чего обработчик onkeyup у полей формы?

  Ответить  

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования