2012-04-26 190 views
0

我有一个包含100行的订单表格。对于其中的每一个,都有一个弹出式按钮,用户可以选择他们想要订购的产品。javascript将值传递给弹出页面

我已经适应了我在网上找到的javscript,它按照下面的代码工作。我的问题是我有100行,每个产品的名称为sku1,sku2,sku3 ... sku4,sku5。我不想创建JavaScript代码的100个实例?

我正在寻找一种方法将我的输入字段sku3的值传递给弹出窗口,以便它知道哪个字段将值发送回。

任何帮助,将不胜感激。

我的主要页面的代码是:(培训相关的片段代码 - 在真正的文件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> 

为popupselector.php JavaScript代码是:

<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; 

I dont wan t将sku1,sku2,sku3硬编码到这些页面中,因为我需要100个popupselector.php页面。

感谢和问候, 莱恩史密斯

回答

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不会在每个循环改变,你可以将它移出循环

- - 更新,从形式到JavaScript弹出发送ID - - 您可以使用DOM访问输入的IMG之前站在的id点击:

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代码,为​​什么你不直接插入id到img标签并将其返回到popupselector.php

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

嗨,谢谢你。我只需要在用户点击链接时调用的函数(或弹出窗口)。大多数时候用户不会这样做,只有当用户需要获取产品代码时。所以我不能看到循环增加好处。我需要将行号或sku号从窗体发送到javascript弹出窗口?任何其他想法?太感谢了。 – Smudger 2012-04-26 13:48:18

+0

只需编辑帖子以符合您的需求 – 2012-04-26 17:04:01