Как сделать так, чтобы касание / касание работало, а не касание при передаче события щелчка на мобильном телефоне? - PullRequest
0 голосов
/ 31 января 2019

У меня есть фрагмент js, который позволяет пользователю выбрать из списка переключателей в элементе div, взять из него адрес и заполнить некоторые поля.Это автоматический поиск адреса из API.

При выборе мобильных устройств на сенсорных устройствах возникают проблемы.на рабочем столе пользователь нажимает, и он скрывает список и заполняет поля формы этими данными из переключателя.На мобильном телефоне, хотя при прокрутке списка вниз он автоматически выбирает один, а затем очищается.это неправильно, ему нужно позволить пользователю прокручивать и продолжать до тех пор, пока он не найдет правильный адрес, и только до тех пор, пока он не коснется / не нажмет кнопку-переключатель, затем исчезнет и заполнит поля формы. Вот что у меня так далеко:

// tells user its a tap or scroll
$(document).on('touchstart', function() {
    detectTap = true; //detects all touch events
});
$(document).on('touchmove', function() {
    detectTap = false; //Excludes the scroll events from touch events
});

click: function(e) {
    // Only trigger if it's a click with the mouse, not caused by using arrow keys

    if (e.type === "click" && e.offsetX !== 0 && e.offsetY !== 0 || e.type === "touchend") {
        detectTap = true;
        if (detectTap == false){

            e.preventDefault();
            //select_address(model, item, address_results, status_element);
            $(model+'_results').show();
            $(model+'_output').hide();

        } else {

            e.preventDefault();
            select_address(model, item, address_results, status_element);
            $(model+'_results').hide();
            $(model+'_output').show();

        }
    }


    // if (e.type === "click" && e.offsetX !== 0 && e.offsetY !== 0 || e.type === "touchmove") {
    //     e.preventDefault();
    //     //select_address(model, item, address_results, status_element);
    //     $(model+'_results').show();
    //     $(model+'_output').hide();
    // }

    // if (e.type === "tap" && e.offsetX !== 0 && e.offsetY !== 0) {
    //  //return false;
    //     // e.preventDefault();
    //     select_address(model, item, address_results, status_element);
    //     $(model+'_results').hide();
    //     $(model+'_output').show();
    // }
},

Этот фрагмент кода определяет, чтобы выбрать или скрыть информацию о клике:

e.preventDefault();
select_address(model, item, address_results, status_element);
$(model+'_results').hide();
$(model+'_output').show();

Что я не могу понять, так это то, что касание не работает; не работает на мобильном телефоне и почему прокруткапросто автоматически выбирает и скрывает содержимое.

...