Размытие 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() {
});
});
}) ;
Спасибо за любые указатели.
Ответы
Ответ 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
}
}