Показать сообщение отдельно
  #1 (permalink)  
Старый 15.04.2012, 12:18
Аватар для swa
swa swa вне форума
Аспирант
Отправить личное сообщение для swa Посмотреть профиль Найти все сообщения от swa
 
Регистрация: 10.04.2009
Сообщений: 50

Прыжки в 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

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

Последний раз редактировалось swa, 15.04.2012 в 12:42. Причина: комментарий добавлен для JS
Ответить с цитированием