iscroll4 предотвращает отображение клавиатуры при фокусировке на внешнем входе (Android / IOS) - PullRequest
1 голос
/ 16 февраля 2012

У меня проблема с iScroll на Android (2.2 / 2.3 и ios)

У меня есть код, который выглядит следующим образом:

<input id = "thing" val=""/>
    <div id="scroller" style="overflow:auto; height:150px;">
        <ul>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
            <li><a class="thing">thing</a></li>
        </ul>
    </div>
    <a class="thing">thing</a>

и js:

$( document ).ready( function(e) {
    var testScroll = new iScroll('scroller', {vScrollbar: false});
    $('a.thing').on('click', function(){$('#thing').focus();});
};

когда я нажимаю на одиночную ссылку, я фокусируюсь на вводе #thing и появляется программная клавиатура.когда я нажимаю на те в скроллере, фокус дается, но клавиатура не появляется.

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

edit: Я использую jquery mobile, если это поможет мне.

1 Ответ

0 голосов
/ 16 февраля 2012

попытайтесь определить, является ли цель входным элементом, измените функцию _start в iscroll.js:

_start: function (e) {
    var that = this,
    point = hasTouch ? e.changedTouches[0] : e,
    matrix;

    that.moved = false;

    if ( e.target.tagName == "SELECT" || e.target.tagName == "INPUT"
        || e.target.tagName == "BUTTON" || e.target.tagName == "TEXTAREA") {
        return true;
    }

    e.preventDefault();

    // more codes here

}
...