У меня есть текстовое поле, которое обернуто в div ошибки, когда пользователь либо отправляет, либо фокусируется на неверном вводе. Я хотел бы удалить оболочку, если пользователь исправляет свою ошибку, однако метод unwrap()
приводит к тому, что поле теряет фокус.
$(special_input).live('keyup', function() {
if (input_okay && input_had_errors) {
$(this).unwrap();
}
});
Ничего страшного, я могу сбросить фокус, и он отлично работает ...
$(this).unwrap().focus();
... везде, но в IE! Я попытался вставить функцию setTimeOut()
в вышеупомянутую функцию, чтобы обойти отсутствие поддержки IE для всплытия события focus()
, и это работает ... вроде.
Единственная проблема в том, что он устанавливает курсор на начало набираемого текста, а не на конец. (ЧТО?!)
Сброс фокуса кажется немного уродливым в любом случае. Есть ли способ удержать unwrap()
от его отмены?
Спасибо.
Тип-решение:
По указанным причинам и неуловимым я просто решил исправить проблему неуместного курсора, что можно сделать, сбросив значение текстового поля после повторной фокусировки на нем. Код выглядит следующим образом.
$(this).unwrap();
setTimeout(function() { $(this).focus().val($(this).val()); }, 5);