Подтвердить что ты не робот

Размытие jQuery и клавиша ввода

Я пытаюсь обновить div динамически с помощью googlemap на основе введенного почтового индекса. Его работа прекрасна, если пользователь уходит от поля ввода (id ZipCode), но если они нажимают кнопку ввода, он не размывает поле. У меня есть вариация в работе с onkeyup, но одно событие вызывает другое и его беспорядок. Можно ли отключить функцию, если происходит какое-либо событие.

$(document).ready(function() {
    $("#ZipCode").blur(function() {
        $("#dynamic").load('googlemap.php', {zipcode: $('#ZipCode').val(), maxdistance:  $("input[name='MaxDistance']:checked").val() }, 
            function() {
            });
        });
}) ;

Спасибо за любые указатели.

4b9b3361

Ответ 1

Вы можете сделать это:

 $(document).ready(function() {    
     $("#ZipCode").bind('blur keyup',function(e) {  
          if (e.type === 'blur' || e.keyCode === 13)  
          // do your stuff here  
     });  
  });

Синтаксис: event.keyCode
Возвращаемое значение: номер, представляющий либо код символа Юникода, либо Юникод key code

Ответ 2

Вы можете сделать это:

$(document).ready(function() {
$("#ZipCode").bind('blur keyup', function(e) {
    if(e.type === 'keyup' && e.keyCode !== 10 && e.keyCode !== 13) return;
    $("#dynamic").load('googlemap.php', {zipcode: $('#ZipCode').val(), maxdistance:  $("input[name='MaxDistance']:checked").val() }, 
        function() {
        });
    });
}) ;

Ответ 3

После повторного чтения вашего вопроса, я думаю, что вы хотите сделать, когда текстовое поле (т.е. #ZipCode) размыто, обновите элемент googlemap; при нажатии клавиши ввода размывает текстовое поле, которое, в свою очередь, обновляет элемент googlemap.

В своем комментарии вы упомянули, что вы не хотите, чтобы клавиша Enter отправляла форму. Возможно, вам потребуется обработать событие keypress.

$(document).ready(function() {
    $("#ZipCode").blur(function() {
        $("#dynamic").load('googlemap.php', {zipcode: $('#ZipCode').val(), maxdistance:  $("input[name='MaxDistance']:checked").val() }, 
            function() {
        });
    });

    $("#ZipCode").keyup(function(e) {
        if (e.which == 13) // Enter key
            $(this).blur();
    });

    // prevent the Enter key from submitting the form
    $('#ZipCode').keypress(function(e) { return e.which != 13; });
}) ;

Ответ 4

Разрешить только одно событие. Вы можете вызвать желаемую функцию в обоих событиях blur и keypress. Наконец, фактическая или желаемая функция должна быть вызвана в событии размытия. Пример
<input disabled="true" type="text" placeholder="Enter Start Location" id = "fromPlaceEntry" onkeypress="startHandlingFromSubmission(event)" onblur="startHandlingFromSubmission(event)">
Мы можем вызвать функцию startHandlingFromSubmission() следующим образом.

function startHandlingFromSubmission(e){
if(e.keyCode===13){ //To check enter event  
    $(e.target).blur();
}
if(e.keyCode===0){ //To check span event
    setTimeout(function() {
        handleFromPlaceSubmission(e);
    }, 200);
}
}

function handleFromPlaceSubmission(e){

        //This is the actual function which we desire to call
       if(e.keyCode === 0){ //executing only in case of blur event
       // your code goes here
       }
}