Нажмите кнопку слайд и сфокусируйтесь на поиске ввода в jquery mobile

Я сделал этот пользовательский интерфейс с JQuery Mobile, здесь я делаю на нажатие кнопки поиска ввода слайд вниз для поиска... и аналогично он будет сосредоточен на поле ввода...

Это сценарий, который я использую,

 $(function() {

    $( ".opensearch" ).on( 'tap', tapHandler );

    function tapHandler( event ) {
      $('.search_field').slideToggle();
      setTimeout(function(){
         $('.search').focus().tap();
        },0);
    }

});

Я проверил его на Opera Mobile и iphone, но проблема в том, что фокус не происходит, значит, он должен показывать клавиатуру браузера, если применяется focus() в теме...

Мой код правильный или что-то еще? Является ли чистый Javascript решением для этой работы?

Вот неработающая демонстрация этого, http://jsfiddle.net/aH4QM/show/

3 ответа

Решение

Я только что преобразовал type="search" в type="text" в мой HTML-код и добавил кнопку отправки для поиска...

Как это:-

<form>
      <input name="search" class="search" value="" placeholder="Search Item...." type="text" data-theme="e">
      <input type="submit" value="Search" data-mini="false" data-icon="search" data-iconpos="notext" data-theme="c"  />
</form>

И JS, как обычно, простой для фокуса: -

$( ".opensearch" ).on( 'click', tapHandler );
function tapHandler( event ) {
     $('.search_field').toggle();
     $('.search').focus();
}

Код теперь работает для меня... http://jsfiddle.net/aH4QM/14/show/

Проблема в вашем коде $('.search').focus().tap();

В HTML вы упомянули

 <input name="search" id="search" value="" placeholder="Search Item...." type="search" data-theme="e" />

'Id' должен начинаться с '#' not '.'

Модифицированная ссылка jsfiddle: http://jsfiddle.net/aH4QM/4/

Примечание: чтобы проверить в скрипке, я изменил 'tap'событие в'click'

Когда вы обращаетесь к определенному элементу через идентификатор, вы должны использовать "#", а не "." и когда вы обращаетесь к элементу через имя класса, вы можете использовать ".". Пожалуйста, обратитесь ниже код.

$(function() {

    $( ".opensearch" ).on( 'tap', tapHandler );

    function tapHandler( event ) {
      $('.search_field').slideToggle();
      setTimeout(function(){
         $('#search').focus().tap();
        },0);
    }

});

Спасибо,

Сива

Другие вопросы по тегам