Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Создание и заполнение INPUT по клику из другого фрейма (https://javascript.ru/forum/dom-window/35237-sozdanie-i-zapolnenie-input-po-kliku-iz-drugogo-frejjma.html)

belovdo 04.02.2013 19:40

Создание и заполнение INPUT по клику из другого фрейма
 
Добрый день!

Помогите пожалуйста в решении проблемы. Знание JS на уровне копипаста (но за счет знания php понимаю принцип). Имеются два фрейма (FRAMESET, не IFRAME): левый (далее LF) и правый (далее RF). В LF форма, в RF каталог товаров. При клике на названии товара в RF должно происходить следующее: в DIV'e, расположенном в LF, создается INPUT с названием данного элемента. Впринципе, некое подобие корзины. Собрал следующий код для фрейма RF:

<script type="text/javascript">
var poscount = <?echo rand(1,999)?>000;

function setPos(obj) {
	parent.document.frames['manager'].document.getElementById('pos'+poscount).value=obj.id;
	parent.document.frames['manager'].document.getElementById('divpos'+poscount).innerHTML=obj.title;
}

function add_div() {

        var dcont  = parent.document.frames['manager'].document.getElementById('form_pos');
        var div = parent.document.frames['manager'].document.createElement('div');
        div.setAttribute('class','divAddPos ');
        div.setAttribute('id','divpos'+poscount);
        dcont.appendChild(div);
}

function add_input() {

	var Form = parent.document.frames['manager'].document.getElementById('form_pos')
	var Inner = parent.document.frames['manager'].document.createElement('input');

	Inner.type = 'hidden';
	Inner.id = 'pos' + poscount;
	Inner.name = 'PROPERTY[85]['+poscount +']'; 
	Form.appendChild(Inner);
}
</script>


и для LF:

<script type="text/javascript">
function add() {
	var Form = document.getElementById('form_pos')
	var Inner = document.createElement('input');
	Inner.type = 'text';
	Inner.value = '';
	Inner.name = 'PROPERTY[85]['+ poscount +']';
	Inner.size = '25';
	Inner.id = 'pos'+poscount;
	Form.appendChild(Inner);
}
</script>


В коде имеется дополнительный хлам, который генерит случайные ID и создает скрытые input'ы которые пишутся в БД при сохранении формы.

Беда заключается в том, что данный код работает в IE с вероятность 50% (в зависимости от версии) и не работает в других браузерах.

Думал что jquery поможет, но не смог найти информации по работе с фреймами (как говорится, правильный запрос можешь сформировать когда знаешь на него ответ).

Очень надеюсь на любую помощь! Спасибо!

рони 04.02.2013 22:06

belovdo,
parent.document.frames без document.
и

div.setAttribute('class','divAddPos ');
div.setAttribute('id','divpos'+poscount);

setAttribute не все ie поймут.
можно
div.className ='divAddPos';
div.id = 'divpos'+poscount;


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