Фокус не работает в IE
i имеет следующую функцию
function change()
{
var input = document.getElementById('pas');
var input2 = input.cloneNode(false);
input2.type = 'password';
input.parentNode.replaceChild(input2,input);
input2.focus();
}
но focus()
не работает в ie7, так что я могу сделать!
Я хочу, чтобы курсор внутри ввода!
спасибо
Обновление
отличное решение, спасибо, но теперь он не работает в опера: (
Ответы
Ответ 1
Для IE вам нужно использовать функцию setimeout из-за ее ленивости, например:
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
От http://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/
Для оперы это может помочь:
как установить фокус в нужном индексе в текстовом поле для оперы
Ответ 2
Мы сталкиваемся с той же проблемой. Для фокусировки мы используем функцию General, которая применяет решение settimeout, упомянутое в:
http://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/
с 100 миллисекундами.
По-прежнему на некоторых экранах он работает неправильно. Особенно, если включены фреймы.
Существует еще одна известная и аналогичная проблема IE:
IE 9 и IE 10 время от времени не могут вводить текст во входные текстовые поля → IE 9 и IE 10 не могут вводить текст во входные текстовые поля время от времени
Что я заметил, когда у вас есть фокус, без указателя вы можете применить обходное решение, нажав клавишу TAB (сфокусируйтесь на следующем элементе), а затем SHIFT + TAB, которая вернется к нашему целевому элементу с указателем фокусировки и ввода.
Чтобы быть уверенным, что мы можем вводить внутренний вход, мы фокусируемся на случайном элементе, а затем на нашем целевом вводе.
$('body').focus();
n.focus();
Таким образом, мы применили одно и то же решение в javascript/JQuery в нашей общей функции фокусировки.
Таким образом, существует оператор if
...
if($.browser.msie) {
setTimeout(function() { try {
$('body').focus(); //First focus on random element
$(n).focus(); //Now focus on target element
} catch (e) { /*just ignore */ } }, 100); //See http://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/
} else { //Standard FF, Chrome, Safari solution...
...
Чтобы быть уверенным, что, поскольку существует большая регрессия, мы по-прежнему сохраняем решение с настройкой в качестве резервной копии.
Протестировано на IE10, IE11, Firefox 45, Chrome 49.0.2623.87
Ответ 3
IE7 не поддерживает метод focus()
. Я не вижу никакого метода.
Ответ 4
У меня была такая же проблема, и я смог заставить IE работать с использованием кода, создав функцию SetInitialFocus и вызвав ее в моей функции PageLoad.
Взгляните на следующий пример и сделайте снимок, это сработало для меня.
http://www.cambiaresearch.com/c4/df9f071c-a9eb-4d82-87fc-1a66bdcc068e/Set-Initial-Focus-on-an-aspnet-Page.aspx
Ответ 5
function change() {
var input = document.getElementById('pas');
var input2 = input.cloneNode(false);
input2.type = 'password';
input.parentNode.replaceChild(input2, input);
setTimeout(function () {
input2.focus();
}, 10);
}
Ответ 6
Его очень легко использовать jQuery, не уверен, почему вы делаете это трудным путем:)
В этом примере у меня есть класс, назначенный для поля ввода. Я хочу, чтобы начальный фокус был установлен как initFocus. Вы можете использовать любой селектор, который вы хотите найти. из вашего кода я бы использовал $( "# pas" ). focus();
$(".initFocus").focus();