остановить вызов API, пока я нажимаю любую кнопку без редактирования этого textField, но курсор находится в этом textField - PullRequest
0 голосов
/ 26 сентября 2019

Я делаю вызов API, когда пользователь вводит 6-значный пин-код в этом городе и автоматическое заполнение текстового поля штата в соответствии с пин-кодом.

Моя проблема в том, что если я введу 6-значный пин-код, то он называется api, но пока я редактируютекстовое поле (ничего не делая, просто нажмите клавишу со стрелкой и другую клавишу, но данные текстового поля те же, что означает, что редактирование не требуется), оно вызывает api каждый раз, когда я нажимаю любую кнопку.

Поэтому мне нужно каждый раз останавливать вызов api, если яне собираюсь редактировать пин-код

        var pin = $("input[name='postcode']").val();
        var remText = pin.replace(/ /g, "");
        var chk_pin = /^[0-9\s]*$/.test(remText);
        console.log(chk_pin + ' ' + chk_pin.length);
        openLoader();
        $("input[name='city']").val('');
        $("select[name='id_state']").val('');

            if(remText.length==6 && chk_pin){
                getbypostcode(pin);
            } else {
                $('#pincode-err1').remove();
                $('#pincode-err2').remove();
                $('#pincode-err3').remove();
                $(".postcode").append("<span id='pincode-err2' style='color:    #FF8C00'>" + checkPin + "</span>");
                closeLoader();
            }
    });

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

вы можете просто получить код ключа введенного ключа и прекратить вызов API, если true, например:

$('#text').keypress(function (event) {
if (event.keyCode === 13) {
    do nothing
}else{
    your code here
}
});

это означает, что если введенный ключ введен, ничего не делать.

вы можете получить свойвведите здесь https://keycode.info/.

Обновление:

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

if(lastPinVal != pin){
 lastPinVal = pin;
do ajax
}else{
do nothing
}
0 голосов
/ 26 сентября 2019

вы можете использовать глобальную переменную для хранения экземпляра этого ajax-запроса, а с помощью этого экземпляра вы можете в любой момент прервать текущий текущий ajax-запрос с помощью метода .abort ().для получения дополнительной информации см. эту ссылку

var xhr = $.ajax({
    type: "POST",
    url: "some.php",
    data: "name=John&location=Boston",
    success: function(msg){
       alert( "Data Saved: " + msg );
    }
});

//kill the request
xhr.abort()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...