#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть еще одно поле ввода — 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’), но теперь я ее очистил. Вот почему я не удаляю этот вопрос, хотя я сказал, что сделаю это, поскольку это может помочь другим. Вы, ребята, если чувствуете, могли бы удалить это. Спасибо.
Комментарии:
1. Пожалуйста, добавьте весь соответствующий код и создайте «фрагмент» прямо здесь, в вашем вопросе, чтобы мы могли повторить вашу проблему и предоставить лучшие ответы.
2. Не вижу
ibox2
нигде в коде.3. Я все еще не могу воспроизвести это, не могли бы вы, пожалуйста, создать фрагмент stackoverflow или jsfiddle?
4. Спасибо за ответ, господа. Код слишком длинный, включающий много
script
разделов. Следовательно, я вроде как опубликовал псевдокод. Это автозаполнение Google Place в сочетании с easyautocomplete. Кроме того, в данный момент я пытаюсь избежать использованияglobal
переменных, которые могли бы выполнить эту работу.
Ответ №1:
Фокус возвращается к ibox1
, потому что вы инструктируете свой документ делать это каждый раз при запуске onChange
события.
например: $(document).on("change", ibox1, funct...
куда вы вызываете ibox1.focus();
`.
Возможное решение: привяжите ваше событие изменения к самому интересующему элементу и избегайте привязки события такого локального значения ко всему документу в будущем.
Комментарии:
1. Я понимаю, что вы говорите, поскольку это пришло и ко мне. Но я подумал, что, поскольку я уже передал селектор
ibox1
,input
событие будет привязано только кibox1
. Я ошибаюсь, сэр?2. да, сэр., я думаю, что да — Используйте
ibox1.on('change', function(e) {...
вместо этого.3. Спасибо, сэр. С радостью признаю, что я был неправ. Последовал тому, что вы сказали, использовал
ibox1
.bind(«input», function() …) вместо$(document).bind...
и это отлично сработало. Ваши слова `потому что вы инструктируете свой документ сделать это` теперь для меня более понятны.
Ответ №2:
Используйте простой метод для привязки события к входным данным. Проверьте приведенный ниже код, это может вам помочь.
(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
}
});
})();
Комментарии:
1. Спасибо за ответ, сэр.
selector.event
это ключ, который вы и мистер Беким прекрасно уловили. Голосую за ваш ответ.