Чтобы получить элемент в фокусе - (то есть не вызывать само событие, а фокусировать элемент), вы используете метод .focus()
.
Вы не можете сделатьчто с функцией, перечисленной выше, потому что это только назначает события ..
Вы просто делаете что-то вроде этого:
document.getElementById('#inputbox').focus();
да, это так просто, как это
Конечно, я понятия не имею, как вы ссылаетесь на элементы в первую очередь.
после пояснений в комментариях
Я повторю ваш вопрос: «Я переопределяюоригинальный метод .focus (). Могу ли я продолжать это делать, не нарушая исходного поведения? "
Да:)
Вот пример - потому что я незнаю ваши переменные или что-то еще, я создаю элемент на лету для этого примера - это не требуется:
e = document.createElement('input');
document.body.appendChild(e);
// note: I'm using .focus() just because it was easier for me to debug.. you
// just as well replace it with .blur() instead.
e.focus = function () {
HTMLInputElement.prototype.focus.apply(this, arguments);
}
e.focus();
JS Fiddle link: http://jsfiddle.net/DK8M7/
Хорошо, яне уверен, сколько из этих переменных вы знакомы.Я даю обзор:
HTMLInputElement
- это имя исходного объекта (воспринимается как «имя класса») для всех элементов ввода .prototype
является объектом, ссылающимся на статический объект, совместно используемый всеми объектами, которые были или еще не были созданы.Вроде как источник. .apply()
- это метод, используемый для вызова функции из определенного контекста - то есть вы выбираете, что это «этот» объект, а последний аргумент представляет собой массив его параметров arguments
- это специальный массив javascript, доступный для всех функций, который включает в себя массив всех его параметров.
Подробнее о методе apply: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply
Переопределение методов blur () всех входных элементов
Еще одна вещь ... Если вы хотите, чтобы все ваши входные элементы имели такое поведение, самый простой способ - на самом деле переопределить его прототип.так как мы находимся на этом пути, вот как вы это сделаете:
HTMLInputElement.prototype.blurCpy = HTMLInputElement.prototype.blur;
HTMLInputElement.prototype.blur = function () {
HTMLInputElement.prototype.blurCpy.apply(this, arguments);
}
Cheers ..