javascript将值传递给弹出页面

时间:2012-04-26 10:16:55

标签: javascript forms popup

我有一个包含100行的订单表格。每个按钮都有一个弹出按钮,用户可以选择他们想要订购的产品。

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

我正在寻找一种方法将输入字段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;

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

谢谢和问候, 莱恩史密斯

1 个答案:

答案 0 :(得分: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在每个循环中没有变化,您可以将其移出循环

- - 更新以将表单中的ID发送到javascript弹出窗口 - 您可以使用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');">