0

我有一个 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 页面。

谢谢和问候,瑞恩史密斯

4

1 回答 1

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');">
于 2012-04-26T12:33:15.370 回答