Подтвердить что ты не робот

Фокус не работает в 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, так что я могу сделать! Я хочу, чтобы курсор внутри ввода!

спасибо

Обновление

отличное решение, спасибо, но теперь он не работает в опера: (

4b9b3361

Ответ 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();