2015-06-08 5 views
1

У меня есть поле ввода, поэтому, когда я нажимаю любое поле ввода, оно фокусируется. Когда я выхожу на улицу, это сфокусировалось.jquery focus не запускается во второй раз

<input type="text" id="english" name="english"/> 

input:active,input:focus{ 
    border: 2px solid red; 
} 

$(document).ready(function() { 
     if (!($("input").is(":focus"))) { 
      alert('not focused'); 
     } 
    }); 

JSFIDDLE

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

Update: Второй вопрос

У меня есть поле ввода внутри фрейма, так что, когда я нажимаю любое поле ввода, он получает внимание. Но опять же, если я нахожусь снаружи (область тела), клавиатура iphone не закрыта. Проблема только с iphone и ipad внутри iframes. Это будет хорошо работать во всех браузерах. Итак, я пробовал, если фокус отсутствует, blur() или document.activeelement. но никто из них не работает.

Как закрыть ipad/iphone клавиатуру, когда элемент ввода не сфокусирован?

+0

Вы не присоединились ни к одному событию. ваш код просто проверяет, сосредоточен ли вход на document.ready. Прикрепите событие en к полю ввода, чтобы он проверял каждый раз, когда вы не фокусировались. – Newinjava

ответ

3

Вы не слушаете какие-либо события, это не будет продолжаться. Вам нужно добавить прослушиватель событий, который прослушивает событие размытия на любом входе.

+0

Не могли бы вы помочь мне с любым рабочим примером? В основном мне нужно закрыть iphone/ipad клавиатуру с JS, если вход не сфокусирован –

1

Что такое epascarello правильно. Оператор if в вашей функции ready срабатывает только один раз, когда DOM закончит загрузку.

Поскольку вы используете jQuery, делать то, что вы пытаетесь сделать, очень просто.

<input type="text" id="english" name="english"/> 

input:active,input:focus{ 
    border: 2px solid red; 
} 

И тогда ваш код JavaScript:

$("input").focusout(function() { 
    alert('not focused'); 
}); 

Я не могу помочь вам с вашим вторым вопросом.

+0

Не предупреждайте при размытии! используйте console.log во время тестирования – mplungjan

+0

В общем, я бы согласился с вами, но OP тестирует это в JSFiddle, где вывод консоли не сразу отображается и, следовательно, не работает ли код. Использование alert() делает его совершенно ясным, что он действительно работает. Кроме того, в этом случае я попытался оставить часть своего кода JS на месте, чтобы он мог точно видеть, что нужно, чтобы получить предупреждение, которое он должен был запустить. – Christian

+0

Консоль видна в jsfiddle, и предупреждение onblur создаст петлю – mplungjan

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