Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / select() не выделяет текст текущего элемента / 14 сообщений из 14, страница 1 из 1
21.10.2013, 11:06
    #38435175
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<!DOCTYPE html>
<html>
<body>
<input type="text" id="d1" maxlength="20" onChange="checkFields(this)">
<input type="text" id="d2" maxlength="20" onChange="checkFields(this)">
<script>
	function checkFields(el){
			document.getElementById('d2').select();
                        //el.select();
	}
</script>
</body>
</html>



Когда событие происходит на 'd1', то текст 'd2', выделяется, но если событие стартует с 'd2', то не выделяется. Хочется, чтобы при изменении происходила валидация текста, и, если ошибка, то выводить сообщение и выделять текст в этом элементе.

Это тестовый вариант только для проверки выделения, если что.
...
Рейтинг: 0 / 0
21.10.2013, 11:18
    #38435189
Zick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
kaldorey,

распишите задачу по-подробнее.
...
Рейтинг: 0 / 0
21.10.2013, 11:21
    #38435195
Zick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
...
Рейтинг: 0 / 0
21.10.2013, 11:23
    #38435196
JOIN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
kaldorey,

может это:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<input type="text" id="d1" maxlength="20" onChange="checkFields(this)">
<input type="text" id="d2" maxlength="20" onChange="checkFields(this)">
<script>
	function checkFields(el){
            $(el).focus();
            $(el).select();
                     
	}
</script>
</body>
...
Рейтинг: 0 / 0
21.10.2013, 12:22
    #38435295
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
JOIN,

jquery не использую, но, насколько я понимаю, $(el) это просто селектор элемента по ИД?
В данном случае разве focus() нужен вообще? В любом случае - работает также.

Zick,

http://jsfiddle.net/m23wS/1/

Есть поле, в котором надо следать валидацию текста, и, если не прошла, то я решил вывести сообщение (пока не важно как, алертом либо рядом красным текстом), и выделить весь текст в этом инпуте, чтобы пользователь сразу мог приступить к исправлению
...
Рейтинг: 0 / 0
21.10.2013, 14:46
    #38435587
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
Не нашел каких-то ограничений, но путем эксперимента выяснил, что на события, при которых теряется фокус элемента, нельзя навесить фокус этого же элемента, а выделение это почти тот же самый фокус. Видимо это браузеры сами блокируют. Новый Firefox, IE8, Chrome - блокируют, а Opera 9.52 спокойно это позволяет.

Придется видимо по кнопке общую валидацию формы проводить, больше способов пока не нашел
...
Рейтинг: 0 / 0
21.10.2013, 14:52
    #38435600
Zick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
kaldorey,

как вариант обрабатывать onblur, но тогда, в случае ошибки фокус будет все время на текущем поле.
...
Рейтинг: 0 / 0
21.10.2013, 15:40
    #38435701
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
Zick,

в случае какой ошибки? Я onblur пробовал навешивать и focus() и select() - не работает.
Дайте рабочий случай. Я просто пока не могу сообразить, как это сделать. Пробовал даже оборачивать. Попробую может завтра поставить фокус на другой элемент - а с него при фокусе инициировать фокус на изначальный, но имхо не поможет
...
Рейтинг: 0 / 0
21.10.2013, 16:54
    #38435841
asdasdad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
kaldorey,

A setTimeout(el.select,0) ?
...
Рейтинг: 0 / 0
22.10.2013, 07:38
    #38436370
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
asdasdad,

Ошибка: TypeError: Value does not implement interface HTMLInputElement.
...
Рейтинг: 0 / 0
22.10.2013, 07:53
    #38436373
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
"«Ручной» запуск (генерация) события не создает по умолчанию действие, связанное с этим событием. Например, программная генерирация события focus на элементе не означает, он получит фокус" ©
http://habrahabr.ru/post/114244/

Так что обход искать для данной цели практически бесполезно. Всем спасибо.
...
Рейтинг: 0 / 0
22.10.2013, 08:14
    #38436382
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
В итоге, самое большое, чего удалось добиться, это если событие оставляет фокус на этом элементе, все работает. Если при событии происходит потеря фокуса - это уже не вернуть в рамках этого события, даже как-то замаскировав.
...
Рейтинг: 0 / 0
22.10.2013, 10:59
    #38436508
asdasdad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
kaldoreyasdasdad,

Ошибка: TypeError: Value does not implement interface HTMLInputElement.
Под IE работает, в других не проверял:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<html>
<head>	
<script>
function checkFields(el) {
  setTimeout(el.select,0);
}
</script>
</head>	
<body>
<input type="text" onChange="checkFields(this)">
<input type="text" onChange="checkFields(this)">
</body>
</html>
...
Рейтинг: 0 / 0
22.10.2013, 12:34
    #38436704
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select() не выделяет текст текущего элемента
asdasdad,

действительно, работает, IE8. Но и он перед этим спросил - надо ли запускать заблокированное содержимое =)
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / select() не выделяет текст текущего элемента / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]