Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Прыжки в resizable (https://javascript.ru/forum/dom-window/27504-pryzhki-v-resizable.html)

swa 15.04.2012 12:18

Прыжки в resizable
 
Подскажите, пожалуйста!

При изменении размеров DIV данные передаю в форму: всё, вроде бы работает верно, но вдруг возвращаются странные значения.

1) вначале обнаружил, что если изменение размеров ограничено внешним div, то если тянуть за нижнюю границу изменяемого элемента, то на экране всё выглядит замечательно, но функция всё равно передает значение относительного положения мышки. Это бы и ладно. Контролирую максимально возможный размер и пересчитываю для данных поля формы,

2) Но почему-то, меняя размеры внутри ограничения значения ui.size.height принимают какие-то непонятные величины.

$("#Advertising").resizable(({
	containment:"#TVscreen",
	stop: function(event, ui){
		$("#adv_width").val(ui.size.width);
		$("#adv_height").val(ui.size.height);
// проверка на размеры при движении мышки за пределами ограничивающего div 
		if(document.getElementById('adv_width').value>document.getElementById('TVscreen').style.width){
			document.getElementById('adv_width').value=parseInt(document.getElementById('TVscreen').style.width);
		};
		if(document.getElementById('adv_height').value>document.getElementById('TVscreen').style.height){
			document.getElementById('adv_height').value=parseInt(document.getElementById('TVscreen').style.height);
		};
//проверка на отступ+ширина<=ширины картинки экрана и, соответственно высота+размер_верт.<=высоты "экрана"
		if((parseInt($("#adv_width").val())+parseInt($("#adv_left").val()))>parseInt($('#TVscreen').width())){
			$("#adv_width").val( (parseInt($('#TVscreen').width())-parseInt($("#adv_width").val())) );
		}
		if((parseInt($("#adv_height").val())+parseInt($("#adv_top").val()))>parseInt($('#TVscreen').height())){
			$("#adv_height").val( (parseInt($('#TVscreen').height())-parseInt($("#adv_top").val())) );
		}
	}
}));


Слой, с изменяемыми размерами может перемещаться внутри ограничивающего div. Поэтому при изменении размеров учитываю положение верхнего левого угла.

На мой взгляд вроде как правильно написано... но, то ли туплю, то ли взгляд "замылился" :-?

Пробовал поставить вместо обработки по окончанию (stop) обработку по движению мышки (resize) - вообще парадокс: в какой-то момент возвращаемые данные принимают невероятное значение...

Использую jquery:
jquery-1.7.2.min.js
jquery-ui-1.8.16.custom.min.js

Буду признателен за совет!


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