powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / click() without focus
28 сообщений из 28, показаны все 2 страниц
click() without focus
    #38460972
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно вызвать click() для label, чтобы фокус не уходил с текущего элемента и страница не скролилась вниз?

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<!DOCTYPE html >
<html>
<head>
</head>
<body>
    <a onclick="unselect()">delete</a>
    <div style="height: 1000px">
    </div>
    <label for="input1" id="labelSelect">
        <input id="input1" type="checkbox" checked />
    </label>
    <script>
        function unselect() {
            document.getElementById("labelSelect").click();
        }
    </script>
</body>
</html>
...
Рейтинг: 0 / 0
click() without focus
    #38461646
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не густо... :)
...
Рейтинг: 0 / 0
click() without focus
    #38461681
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoria,

а чего в итоге ты хочешь добиться?
просто поменять checked в чекбоксе? так это можно напрямую сделать
...
Рейтинг: 0 / 0
click() without focus
    #38461728
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечZoria,

а чего в итоге ты хочешь добиться?
просто поменять checked в чекбоксе? так это можно напрямую сделать
да в том-то все и дело, что не только - на лабельклик навешано целая сказка, она меняет классы, чекед у чекбокса, происходит валидация и так же удаляется кое-чего из яваскриптового аррая. это все и происходит, только при этом чекбокс становится активным элементом и длинная страница услужливо скролит туда..
...
Рейтинг: 0 / 0
click() without focus
    #38462013
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZoriaЯростный МечZoria,

а чего в итоге ты хочешь добиться?
просто поменять checked в чекбоксе? так это можно напрямую сделать
да в том-то все и дело, что не только - на лабельклик навешано целая сказка, она меняет классы, чекед у чекбокса, происходит валидация и так же удаляется кое-чего из яваскриптового аррая. это все и происходит, только при этом чекбокс становится активным элементом и длинная страница услужливо скролит туда..Да вроде всё нормуль:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
<!DOCTYPE html>
<html>  
<head></head>  
<body>
  <a onclick="unselect('input1')">delete</a>
  <div style="height: 1000px"></div>
  <label for="input1" id="label1" onclick="onLabelClick(this,event)">
    Label: <input id="input1" type="checkbox" checked />
  </label>
  <script>
    function onLabelClick(sender, event) {
      console.log('Label for "' + sender.getAttribute('for') + '" clicked.');
    }

    /**
     * @param elementID  String  Required. The ID attribute's value of the element you want to select
     */
    function select(elementID) {
      var element = document.getElementById(elementID);

      if (element) {
        element.checked = true;
      }
    }

    /**
     * @param elementID  String  Required. The ID attribute's value of the element you want to unselect
     */
    function unselect(elementID) {
      var element = document.getElementById(elementID);

      if (element) {
        element.checked = false;
      }
    }
  </script>
</body>
</html>
...
Рейтинг: 0 / 0
click() without focus
    #38462068
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДа вроде всё нормуль
не поняла, что именно нормуль?
если просто менять свойство checked, то да, на элемент не ставится фокус.

но у меня это *(меняет свойство checked) делаетcя по лабельклик, на который навешано много разного кода. мне не достаточно просто сделать чекбокс чекнутым.., мне еще нужно выполнить все то что при этом выполняется по лабельклик.
...
Рейтинг: 0 / 0
click() without focus
    #38462120
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZoriaskyANAДа вроде всё нормуль
не поняла, что именно нормуль?
если просто менять свойство checked, то да, на элемент не ставится фокус.

но у меня это *(меняет свойство checked) делаетcя по лабельклик, на который навешано много разного кода. мне не достаточно просто сделать чекбокс чекнутым.., мне еще нужно выполнить все то что при этом выполняется по лабельклик.Писать в обработчиках событий много разного кода - это плохая практика. Обработчики пухнут, понять, что в них делается, становится всё труднее.
Разнесите логику на отдельные методы и в onDeleteClick используйте то-то, а в onLabelClick сё-то.
...
Рейтинг: 0 / 0
click() without focus
    #38462123
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAZoriaпропущено...

не поняла, что именно нормуль?
если просто менять свойство checked, то да, на элемент не ставится фокус.

но у меня это *(меняет свойство checked) делаетcя по лабельклик, на который навешано много разного кода. мне не достаточно просто сделать чекбокс чекнутым.., мне еще нужно выполнить все то что при этом выполняется по лабельклик.Писать в обработчиках событий много разного кода - это плохая практика. Обработчики пухнут, понять, что в них делается, становится всё труднее.
Разнесите логику на отдельные методы и в onDeleteClick используйте то-то, а в onLabelClick сё-то.
я не могу ее разнести :)
...
Рейтинг: 0 / 0
click() without focus
    #38462141
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoria, так. Вам посоветовать красивый костыль? :)
...
Рейтинг: 0 / 0
click() without focus
    #38462152
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAZoria, так. Вам посоветовать красивый костыль? :)
ну если он еще и красивый.... то давайте его сюда :-)
...
Рейтинг: 0 / 0
click() without focus
    #38462205
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у страницы есть прокрутка, то label можно спрятать, кликнуть и опять показать.
...
Рейтинг: 0 / 0
click() without focus
    #38462214
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZoriaКак можно вызвать click() для label, чтобы фокус не уходил с текущего элемента и страница не скролилась вниз?

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<!DOCTYPE html >
<html>
<head>
</head>
<body>
    <a onclick="unselect()">delete</a>
    <div style="height: 1000px">
    </div>
    <label for="input1" id="labelSelect">
        <input id="input1" type="checkbox" checked />
    </label>
    <script>
        function unselect() {
            document.getElementById("labelSelect").click();
        }
    </script>
</body>
</html>


Что бы страница не скролилась вниз нужно изменить обработчик который скролит ее вниз (это же очевидно)
Если обработчик изменить нельзя по каким либо причинам отскроль страницу назад
Запомнив scrollTop до вызова обработчика и вернув его после обработчика


Рабочего примера для разбора нет может быть много всяких нюансов
...
Рейтинг: 0 / 0
click() without focus
    #38462227
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малыхин СергейЗапомнив scrollTop до вызова обработчика и вернув его после обработчика
этот вариант был испробован как первый, не подходит потому что скроль скачет тогда сначала вниз потом назад.
Малыхин Сергей"Что бы страница не скролилась вниз нужно изменить обработчик который скролит ее вниз (это же очевидно)"
я привела конкретный рабочий пример, какой обработчик, который скролит ее вниз можно в нем изменить?
...
Рейтинг: 0 / 0
click() without focus
    #38462265
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    <script>
		$ = function(selector) {
			return document.querySelector(selector);
		}
        function unselect() {
			var el = $('#labelSelect input[type="checkbox"]');
			el.style.display = "none";
            $("#labelSelect").click();
			el.style.display = "inline";
        }
    </script>
...
Рейтинг: 0 / 0
click() without focus
    #38462372
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_st
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<script>
		$ = function(selector) {
			return document.querySelector(selector);
		}
        function unselect() {
			var el = $('#labelSelect input[type="checkbox"]');
			el.style.display = "none";
            $("#labelSelect").click();
			el.style.display = "inline";
        }
</script>


спасибо, да, я видела ваше предложение, еще не успела проверить поэтому не отреагировала до сих пор.
...
Рейтинг: 0 / 0
click() without focus
    #38462477
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
факир был пьян.. IE<=8 не меняет состояние чекбокса, если поставить ему display=none
<body>
<a onclick="unselect()">delete</a>
<div style="height: 800px">
</div>
<label for="input1" id="labelSelect">
<input id="input1" type="checkbox" checked />
</label>
<script>
function unselect() {
var el = document.getElementById("input1");
el.style.display = "none";
document.getElementById("labelSelect").click();
el.style.display = "inline";
}
</script>
</body>
...
Рейтинг: 0 / 0
click() without focus
    #38462485
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZoriaskyANAZoria, так. Вам посоветовать красивый костыль? :)
ну если он еще и красивый.... то давайте его сюда :-)Вот:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
<!DOCTYPE html>
<html>  
<head></head>  
<body>
  <a onclick="onDeleteClick(this,event)">delete</a>
  <div style="height: 1000px"></div>
  <label for="input1" id="label1" onclick="onLabelClick(this,event)" tabindex="-1">
    Label: <input id="input1" type="checkbox" tabindex="-1" checked />
  </label>
  <script>
    function onDeleteClick(sender, event) {      
      hide('input1');
      clickOn('label1');
      show('input1', 'inline-block');
    }
    
    function onLabelClick(sender, event) {
      var elementID = sender.getAttribute('for');
      
      console.log('Label for "' + elementID + '" clicked.');
    }

    /**
     * @param elementID  String  Required. The ID attribute's value of the element you want to click on
     */
    function clickOn(elementID) {
      var element = document.getElementById(elementID);

      if (element) {
        element.click();
      }
    }

    /**
     * @param elementID  String  Required. The ID attribute's value of the element you want to hide
     */
    function hide(elementID) {
      var element = document.getElementById(elementID);

      if (element) {
        element.style.display = 'none';
      }
    }

    /**
     * @param elementID  String  Required. The ID attribute's value of the element you want to show
     */
    function show(elementID, style) {
      var element = document.getElementById(elementID);

      if (element) {
        element.style.display = style;
      }
    }
  </script>
</body>
</html>
...
Рейтинг: 0 / 0
click() without focus
    #38462495
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,


ZoriaIE<=8 не меняет состояние чекбокса, если поставить ему display=none
...
Рейтинг: 0 / 0
click() without focus
    #38462498
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoria, дак сделайте это за него!

P.S.: Вы чувствуете как улучшается ваш код?
...
Рейтинг: 0 / 0
click() without focus
    #38462507
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAZoria, дак сделайте это за него!
как?
skyANAP.S.: Вы чувствуете как улучшается ваш код?
"волк, тебе стало легче - гараздо!!!" зы
...
Рейтинг: 0 / 0
click() without focus
    #38462641
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoriaя привела конкретный рабочий пример, какой обработчик, который скролит ее вниз можно в нем изменить?Каюсь пример рабочий краткий и полностью описывает проблему.
В примере нет обработчика клика который можно изменить =(
Похоже проблема в том что браузер скролит страницу до контрола если он не находится в видимой части страницы.

В интернет браузерах как уже подсказали проблема легко обходится скрытием контрола (display = "none";)
Для прочего можно использовать скачущие костыли на скролТопе =)

Ну если совсем необходимо то можно задать чекбоксу абсолютные координаты и в момент клика перемещать его под мышку и сразу же возвращать обратно (такое решение выглядит просто ужасно (поэтому его нужно реализовать) )
...
Рейтинг: 0 / 0
click() without focus
    #38462652
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малыхин СергейВ интернет браузерах как уже подсказали проблема легко обходится скрытием контрола (display = "none";)
если бы еще ие8 заставить работать, моему счастью не было бы предела ))))))))
...
Рейтинг: 0 / 0
click() without focus
    #38462754
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoria, как вариант


Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
<!DOCTYPE html >	
<html>
<head>
</head>
<body>
    <a onclick="unselect(this)">delete</a>
    <div style="height: 1000px">
    </div>
    <label for="input1" id="labelSelect">
        <input id="input1" type="checkbox" checked />
    </label>
    <script>

        function unselect(par) {	
			var c_box, el ; 
		
		
		c_box = document.getElementById("labelSelect");
		c_box.saveStyle = {};
		c_box.saveStyle.display = c_box.style.display;
		
		if('\v'=='v'){ // Если IE .....

				function getOffsetRect(elem) { // Акуратно взято с http://javascript.ru/ui/offset	
						// (1)
						var box = elem.getBoundingClientRect()
						// (2)
						var body = document.body
						var docElem = document.documentElement
						// (3)
						var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
						var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft
						// (4)
						var clientTop = docElem.clientTop || body.clientTop || 0
						var clientLeft = docElem.clientLeft || body.clientLeft || 0
						// (5)
						var top  = box.top +  scrollTop - clientTop
						var left = box.left + scrollLeft - clientLeft
						return { top: Math.round(top), left: Math.round(left) }
					};
				

						el = getOffsetRect(par);

						c_box = document.getElementById("labelSelect");

							c_box.saveStyle.position = c_box.style.position;
							c_box.saveStyle.top = c_box.style.top;
							c_box.saveStyle.left = c_box.style.left ;
								
								c_box.style.position = "absolute";
								c_box.style.top = el.top + "px";
								c_box.style.left = el.left + "px";

						c_box.click();
							
							c_box.style.position = c_box.saveStyle.position;
							c_box.style.top = c_box.saveStyle.top;
							c_box.style.left = c_box.saveStyle.left;

		} else { //Если страница открыта в браузере

			c_box.style.display = "none";
			c_box.click();
			c_box.style.display = c_box.saveStyle.display;

		};
}
    </script>
</body>
</html>
...
Рейтинг: 0 / 0
click() without focus
    #38464085
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
побила-таки, кажется...
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<!DOCTYPE html >	
<html>
<head>
<style> input.hideforclick{position: absolute;top: -5000px;}</style>
</head>
<body>
    <a onclick="unselect()">delete</a>
    <div style="height: 1000px">
    </div>
    <label for="input1" id="labelSelect">
        <input id="input1" type="checkbox" checked />
    </label>
    <script>
        function unselect() {
            var el = document.getElementById("input1");
            el.className = "hideforclick";
            document.getElementById("labelSelect").click();
            el.className = "";
        }
    </script>
</body>
</html>
...
Рейтинг: 0 / 0
click() without focus
    #38464295
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoriaпобила-таки, кажется... В последнем хроме прыгает (
...
Рейтинг: 0 / 0
click() without focus
    #38464331
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малыхин СергейZoriaпобила-таки, кажется... В последнем хроме прыгает (
балин..
я его так не люблю, что в него не заглядываю..
...
Рейтинг: 0 / 0
click() without focus
    #38464334
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для хрома прокатит дисплэй ноне, и потом инлайн.
трюк с позишн буду подставлять для ие до 8го.
...
Рейтинг: 0 / 0
click() without focus
    #38464338
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoriaдля хрома прокатит дисплэй ноне, и потом инлайн.
трюк с позишн буду подставлять для ие до 8го.
Еще для оперы 12х версий наверно тоже трюк понадобится
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / click() without focus
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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