Удаление фокуса с поля ввода, которое было сфокусировано ранее

У меня есть еще одно поле ввода - ibox2, на той же странице.

Проблема. После выполнения каких-либо действий с ibox1 и оставления там значения длины > 5, если я начну вводить ibox2, фокус вернется к ibox1.

Это if петля с ibox1.focus() делает это. Как я могу полностью убрать фокус с ibox1 при нажатии снаружи и аннулировать цикл if и его операторы.

Пробовал blurно не получилось.

var ibox1 = $("#inputbox1");

$(document).on("change", ibox1,function(e) { 

   var valu = ibox1.val();

   if (valu.length > 5){

      #do something  
      ibox1.focus(); #used this as input box lost focus with each charater typed.    

   }

});

var ibox2 = $("#inputbox2"); #This is for google places autocomplete.

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

Уважаемые модники, я последовал хорошему принятому ответу и сделал ошибку в понимании $('document'), но теперь я понял это. Вот почему я не удаляю этот вопрос, хотя и сказал, что буду, так как это может помочь другим. Вы, ребята, если вы чувствуете, может удалить это. Спасибо.

Добавьте все соответствующий код и создайте «фрагмент» прямо здесь, в своем вопросе, чтобы мы могли воспроизвести вашу проблему и дать более точные ответы.

Scott Marcus 17.03.2019 17:41

Не вижу ibox2 нигде в коде.

Maheer Ali 17.03.2019 17:48

Я все еще не могу воспроизвести его, не могли бы вы сделать фрагмент кода stackoverflow или jsfiddle?

Jibin Joseph 17.03.2019 17:56

Спасибо за ответ, господа. Код слишком длинный, включает много script разделов. Следовательно, я как бы опубликовал псевдокод. Это автозаполнение Google Place в сочетании с easyautocomplete. Кроме того, в данный момент я стараюсь избегать использования переменных global, которые могут выполнять эту работу.

lmao 17.03.2019 18:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
4
183
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Фокус возвращается к ibox1, потому что вы указываете своему документу делать это каждый раз, когда запускается событие onChange.

например: $(document).on("change", ibox1, funct... куда вы звоните ibox1.focus(); `.

Возможное решение: привяжите событие изменения к самому интересующему элементу и избегайте привязки события такого локального значения ко всему документу в будущем.

Я понимаю, что вы говорите, поскольку это пришло и ко мне. Но я подумал, что, поскольку я уже передал селектор ibox1, событие input будет привязано только к ibox1. Я ошибаюсь, сэр?

lmao 17.03.2019 18:06

да, сэр., я думаю, что вы - используйте ibox1.on('change', function(e) {... вместо этого.

Bekim Bacaj 17.03.2019 18:10

Спасибо, сэр. С радостью признаю, что был не прав. Следуя тому, что вы сказали, использовал ibox1.bind("input", function()...) вместо $(document).bind..., и это сработало отлично. Твои слова «потому что ты предписываешь это своему документу» стали для меня более понятными.

lmao 17.03.2019 19:09

Используйте простой метод для присоединения события к входам. Проверьте код ниже, он может вам помочь.

(function(){
  var in1 = jQuery('#input1'); // first input
  var in2 = jQuery('#input2'); // second input

  // On change of first input
  in1.change(function(){
    if (this.val().length > 5){
      // do something
    }
  });

  // On change of second input
  in2.change(function(){
    if (this.val().length > 5){
      // do something
    }
  });

})();

Спасибо за ответ, сэр. selector.event это ключ, как вы и г-н Беким прекрасно поймали. Голосование за ваш ответ.

lmao 17.03.2019 19:16

Другие вопросы по теме