Обходной путь setSelectionRange не работает для Android 4.0.3

1

Я пытаюсь замаскировать номер телефона как пользовательский тип. Я использовал javascript-код ниже с jquery и обходным решением setTimeout на устройствах Android 2.x, но я не нашел обходного пути для этого для Android 4.0.3.

if (navigator.userAgent.toLowerCase().indexOf("android") >= 0) {
$.fn.usphone = function() {
    this.keyup(function(e) {
        // do not process del, backspace, escape, arrow left and arrow right characters
        var k = e.which;
        if (k == 8 || k == 46 || k == 27 || k == 37 || k == 39)
            return;
        // remove invalid characters
        var value = "";
        for (var i = 0; i < this.value.length; i++) {
            var ch = this.value[i];
            if (ch >= "0" && ch <= "9")
                value += ch;
        }
        // remove extra characters
        if (value.length > 10)
            value = value.substring(0, 10);
        // insert formatting characters
        if (value.length >= 3)
            value = "(" + value.substring(0, 3) + ")" + value.substring(3);
        if (value.length > 5)
            value = value.substring(0, 5) + " " + value.substring(5);
        if (value.length > 9)
            value = value.substring(0, 9) + "-" + value.substring(9);
        // set new value
        var $this = this;
        var length = value.length;
        setTimeout(function() {
            $this.value = value;
            $this.setSelectionRange(length, length);
        }, 0);
    });
};

$('#contact_edit_page, #contact_new_page, #callback_create, #callback_edit, #new_phonecall_contact_page, #new_phonecall').live('pagecreate', function() {
    $('[type^="tel"]').usphone();
});

}

  • 0
    Вы когда-нибудь находили решение этой проблемы? имея точно такую же проблему.
  • 0
    Это может быть Android 4.0, так как у меня такая же проблема на 4.0.4. Курсор, кажется, нормально перемещается на 4.1, хотя.
Теги:
cursor

1 ответ

1

Я только что встретил ту же проблему. Мое решение таково:

.input {
  -webkit-user-modify: read-write;
}

Он работает в android 4.0.3 в моем HTC.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню