2012-04-26 2 views
0

У меня есть таблица формы заказа со 100 строками. для каждого из них есть кнопка со всплывающим окном, в котором пользователи могут выбрать продукт, который они хотят заказать.javascript pass value to popup page

Я адаптировал javscript, который я нашел в сети, которая работает в соответствии с приведенным ниже кодом. моя проблема в том, что у меня есть 100 строк, каждый продукт имеет имя sku1, sku2, sku3 ... sku4, sku5. Я не хочу создавать 100 экземпляров кода javascript?

Я ищу способ передать значение моего поля ввода sku3 во всплывающее окно, чтобы он знал, в каком поле нужно отправить значение обратно.

любая помощь будет оценена.

мой основной код страницы: (Отрывок из Релевент code- 100 строк в реальном документе)

<tr id="r1"> 
    <td> 
     <input size=10 type=number id=sku1 name=sku1> 
     <img src=q.png border=0 onClick="window.open('popupselector.php','orderform','width=500,height=600');"> 
    </td> 
    <td> 
     <input type="number" name="qty1" id="qty1"> 
    </td> 
</tr> 
<tr id="r2"> 
    <td> 
     <input size=10 type=number id=sku2 name=sku2> 
     <img src=q.png border=0 onClick="window.open('popupselector.php','orderform','width=500,height=600');"> 
    </td> 
    <td> 
     <input type="number" name="qty2" id="qty2"> 
    </td> 
</tr> 
<tr id="r3"> 
    <td> 
     <input size=10 type=number id=sku3 name=sku3> 
     <img src=q.png border=0 onClick="window.open('popupselector.php','orderform','width=500,height=600');"> 
    </td> 
    <td> 
     <input type="number" name="qty3" id="qty3"> 
    </td> 
</tr> 

Javascript код popupselector.php является:

<SCRIPT LANGUAGE="JavaScript"> 

function sendValue(s){ 
var selvalue = s.options[s.selectedIndex].value; 
window.opener.document.orderform.sku1.value = selvalue; 
window.close(); 
} 

</script> 
<form name=selectform> 

<SELECT NAME=selectmenu size=30> 
<?=$options?> 
</SELECT> 

<input type=button value="Select" onClick="sendValue(this.form.selectmenu);"> 
</form> 

Если Javascript имеет sku1 , Я хочу, чтобы это была переменная в зависимости от строки, которую пользователи нажимают:

window.opener.document.orderform.sku1.value = selvalue; 

Я не хочу t для жесткого кодирования sku1, sku2, sku3 на эти страницы, поскольку мне понадобится 100 popupselector.php страниц.

Спасибо и наилучшими пожеланиями, Ryan Smith

ответ

1

Я думаю, что вы можете создать переменную стать id элемента, а затем запросить их в цикле.

function sendValue(s){ 
    for (var i = 1; i < 101; i++) { 
     var selvalue = s.options[s.selectedIndex].value; 
     var itemId = 'sku' + i; 
     var item = document.getElementById(itemId).value = selvalue; 
    } 
    window.close(); 
} 

Если selvalue не изменяется в каждом цикле, вы можете переместить его из петли

- - Обновление отправить идентификатор из формы в яваскрипта всплывающего окна - - Вы можете использовать DOM, чтобы получить доступ к идентификатору входа, стоящему прямо перед IMG щелкнуло:

function sendValue(s){ 
    var inputField = s.previousSibling; // will be the space between <input> and <img> 
    if (inputField.nodeName != 'INPUT') 
     inputField = inputField.previousSibling; // will be the <input> node 

    // Here you can get id, name... attributes with: inputField.getAttribute('id'), inputField.getAttribute('name') 
    window.close(); 
} 

Некоторые считал: Если строки таблиц генерируются из PHP-код, почему бы вам не вставить идентификатор непосредственно в тег img и получить его обратно внутри popupselector.php

<img src=q.png border=0 onClick="window.open('popupselector.php?<?=$rowId ?>','orderform','width=500,height=600');"> 
+0

Привет, спасибо. Мне нужна функция (или всплывающее окно), когда пользователь нажимает на ссылку. В большинстве случаев пользователь не будет этого делать, только когда пользователь должен получить код продукта. Поэтому я не могу видеть, как добавляет преимущество. Мне нужен идентификатор номера строки или номер sku для отправки из формы в всплывающее окно javascript? любые другие идеи? бесконечно благодарен. – Smudger

+0

Просто отредактируйте сообщение, чтобы оно соответствовало вашим потребностям –