2013-05-06 6 views
0

Я создал компонент текстового поля, состоящий из обычного текстового поля и кнопки clear (x) рядом с ним.Виртуальная клавиатура кратковременно исчезает на якорный щелчок

Это наценка:

<div class="input-clear"> 
    <input type="email" name="user" placeholder="Email address" /> 
    <a href="#">clear</a> 
</div> 

Это код, я использую для его инициализации:

[].forEach.call(document.getElementsByClassName('input-clear'), function(el) { 
    var input = el.getElementsByTagName('input')[0], 
    a = el.getElementsByTagName('a')[0], 
    updateField = function() { 
     if (input.value.length) { 
      a.style.display = 'inline'; 
     } else { 
      a.style.display = 'none'; 
     } 
    }, 
    clearField = function(event) { 
     event.preventDefault(); 
     input.value = ''; 
     input.focus(); 
     updateField(); 
    }; 

    if (input && a) { 
     input.addEventListener('keyup', updateField, false); 
     input.addEventListener('change', updateField, false); 

     a.addEventListener('click', clearField, false); 

     updateField(); 
    } 
}); 

обработчик событий clearField() опустошают поля, удаляет кнопку четкой и затем снова фокусирует текстовое поле.

Проблема

Когда кнопка нажата ясно, виртуальная клавиатура на короткое время исчезает между размытием и фокусировкой. Можно ли постоянно держать клавиатуру видимой?

Btw, я знаю, что кнопка ясно не исчезает, когда выбран весь текст, а затем удаляется, но я не слишком беспокоиться о том, что сценарий :)

+0

Что произойдет, если вы используете 'touchstart' вместо' click' и отмените событие до того, как вход потеряет фокус? –

+1

@DaggNabbit Хорошо, это запечатало сделку :) вы хотите написать это как ответ? –

+0

Конечно, почему бы и нет :) –

ответ

1

Попробуйте слушать для touchstart вместо click, он должен стрелять, прежде чем вход потеряет фокус (и он будет немного более отзывчивым).

Смежные вопросы