Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   событие клика не на input-элементе (https://javascript.ru/forum/jquery/3328-sobytie-klika-ne-na-input-ehlemente.html)

czar 08.04.2009 11:35

событие клика не на input-элементе
 
хочу сделать такую штуку.
есть строчка html:
History: per <u><b><span id="per">0</span></b></u> days

по клику н а цифру появляется текстовый input в котором молжно редактировать цифру пока за данных за период дней.

вот настрочил маленький кодик который в общем-то выполянет то что я хочу.
$("#per")
		.click(function(e){
			e.preventDefault();
			var input = $('<input />').attr({value:$(this).text(),name:"per",size:1,style:"border:1px solid #ccc;text-align:center"});
			$(this).html(input);
			input.focus();
		})
		.change(function(e){
			var value = $(this).find('input').val();
			$(this).html(value);
		})
		;


НО срабатывает только если данные изменены и нажат Enter.
хочу сделать так чтобы срабатывал и тогда когда клацают мышью гдето НЕ на инпуте

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

Kolyaj 08.04.2009 11:51

Цитата:

Сообщение от czar
в событиях инпута события unfocus к сожалению нет

blur

czar 08.04.2009 12:33

Цитата:

Сообщение от Kolyaj (Сообщение 16145)
blur

да, почти то что надо... только действует почему-то только при изменении данных.\ну пусть будет пока так.

Kolyaj 08.04.2009 12:36

Всегда он действует.

x-yuri 09.04.2009 04:50

меня что вообще смущает: то, что change все-таки вызывается O_o но все еще страннее, в opera - по клику мышкой за пределами, в ff - по Enter'у (в обоих случаях содержимое должно измениться). В ie вообще не работает. В opera и ff добавили onchange для span O_o Кстати по Enter onchange в opera срабатывает, но если через jQuery назначать - то нет

p.s. пара замечаний к коду: 1) preventDefault тут не нужно, 2) вместо html можно использовать append (где input) и text (где value)


Часовой пояс GMT +3, время: 06:46.