2016-10-02 13 views
-4

У меня есть классический случай ввода, который очищается при получении фокуса.Javascript: Как предотвратить запуск фокуса на вход при фокусировке окна?

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

Как предотвратить включение фокуса из-за фокуса окна браузера, а не щелчка на вкладке, вкладке, щелчке на ярлыке или любом традиционном действии на странице?

NO JQUERY ПОЖАЛУЙСТА.

EDIT: ОК, по-видимому, некоторым людям нравится голосовать отрицательно каждый раз, когда сообщение не имеет какого-либо кода. Так что если вам нужен код, чтобы понять эту простую идею, вот это:

<input type=text onfocus="this.value=''"> 
+2

Почему данные очищены в центре внимания? – adeneo

+0

Где мой код? – j08691

+0

Как кто-нибудь может помочь исправить поведение в коде, который они не видят? Предоставить [mcve] – charlietfl

ответ

1

Технически, переключение окон вызывает элемент потерять/восстановить фокус. Это, конечно, запускает обработчик события focus. Невозможно различать то, что вызвало событие фокуса.

Если вы хотите, чтобы очистить поле только тогда, когда он выбран вручную, используйте click событие вместо:

<input type=text onclick="this.value=''"> 

Вы можете обнаружить, если страница теряет фокус. Возможно, это будет возможно, чтобы сделать вывод, следует ли очищать input или нет, когда он восстанавливает фокус. Я не уверен, имеет ли значение порядок событий или если порядок событий отличается от используемого браузера.

<input type=text> 
donotclear = false; 

addEventListener('blur',function(e){ 
    donotclear = true; 
}); 

document.getElementsByTagName('input')[0].addEventListener('focus',function(e){ 
    if(donotclear) { 
    donotclear = false; 
    } else { 
    this.value = ''; 
    } 
}); 
+0

Как упоминалось ранее, onclick вызывает много проблем: 1. Вход может быть выбран с помощью вкладки или метки, например. 2.Перемещение курсора также является щелчком. – FlorianB

+0

@FlorianB Обновлено – Ouroborus

+0

спасибо, я подумал об этом решении, он, вероятно, был бы наименее грязным :) Хм мне нравится идея установки donotclear = false, когда входы попадают в фокус, а не пытаются обнаружить, когда мы вернемся к окну, а затем установите его с тайм-аутом ... – FlorianB

 Смежные вопросы

  • Нет связанных вопросов^_^