1

我正在尝试发布商品name="pricetag"name="size"价格中的and ...我知道这不起作用,因为我使用了echo,但没有任何结果,但是如果我回显我展示的产品的pid。下面的代码

<form id="add2cart" name="cart" method="Post" action="<?php fetchdir($bpages); ?>cart.php">
    <table>
        <tr>
            <td width="160">Price:</td>
            <td name="pricetag" id="pricetag">£25.00</td>
        </tr>
        <tr>
            <td width="160">Item:</td>
            <td name="size" id="item">12 inch</td>
        </tr>           
        <tr>
            <td width="160">Length*:</td>
            <td>
                <select name="length" onChange="addCharge(this, this.selectedIndex);" id="priceDropDown" class="small">
                    <option value="£25.00">12 inch</option>
                    <option value="£30.00">14 inch (+£30.00)</option>
                    <option value="£35.00">16 inch (+£35.00)</option>
                    <option value="£40.00">18 inch (+£40.00)</option>
                    <option value="£45.00">20 inch (+£45.00)</option>
                    <option value="£55.00">22 inch (+£55.00)</option>
                    <option value="£60.00">24 inch (+£60.00)</option>
                    <option value="£70.00">26 inch (+£70.00)</option>
                    <option value="£80.00">28 inch (+£80.00)</option>
                </select>
            </td>
        </tr>       
        <tr>
            <td>Quantity</td>
            <td><input type="text" name="Qty" id="Qty" value="1" style="width: 20px; text-align: right" /></td>

        </tr>       
    </table>    
    <div class="cleaner h20"></div>

    <input type="hidden" name="pid" id="id" value="<?php echo $id; ?>" />
    <input type="Submit" class="button" name="button" id="button" value="Add to shopping cart"/>
</form> 

单击此处获取Ghillied的实时代码http://jsfiddle.net/J4rXX/5/

4

2 回答 2

1

它不 POST 因为表单不提交来自 TD 元素的内容。仅来自 INPUT、SELECT 和 TEXTAREA。

有关 HTML 表单的更多信息,请点击此处。如果您想避免两次显示相同的数据,您应该尝试INPUT type=hidden

<table>
<tr>
  <td>Pricetag</td><td>PRICE_HERE</td>
</tr>
</table>
<form>
   <input type="hidden" name="pricetag" value="PRICE_HERE" />
...
</form>

这应该不会损害您现有的 JS 脚本。

于 2013-06-01T00:03:46.643 回答
0

从 HTML 表单发布到服务器的唯一信息是 INPUT、SELECT 和 TEXTAREA 等元素。

如果您想发布额外的数据,但使其无法对用户进行编辑,则理想情况下需要将数据放入具有属性的 INPUT 元素中type="hidden"。这将发布来自该字段的数据,但对发布表单的用户隐藏它们。

在表单中的任何位置添加元素都可以。在此代码段中,我已将它们放置在表单元素的底部,并带有已经存在的隐藏字段。

我还从片段中的 TD 元素中删除了 name 属性,以符合 Web 标准。

<form id="add2cart" name="cart" method="Post" action="<?php fetchdir($bpages); ?>cart.php">
  <table>
    <tr>
      <td width="160">Price:</td>
      <td id="pricetag">£25.00</td>
    </tr>
    <tr>
      <td width="160">Item:</td>
      <td id="item">12 inch</td>
    </tr>           
    <tr>
      <td width="160">Length*:</td>
      <td>
      <select name="length" onChange="addCharge(this,this.selectedIndex);" id="priceDropDown" class="small">
        <option value="£25.00">12 inch</option>
        <option value="£30.00">14 inch (+£30.00)</option>
        <option value="£35.00">16 inch (+£35.00)</option>
        <option value="£40.00">18 inch (+£40.00)</option>
        <option value="£45.00">20 inch (+£45.00)</option>
        <option value="£55.00">22 inch (+£55.00)</option>
        <option value="£60.00">24 inch (+£60.00)</option>
        <option value="£70.00">26 inch (+£70.00)</option>
        <option value="£80.00">28 inch (+£80.00)</option>
      </select>
    </td>
    </tr>       
    <tr>
      <td>Quantity</td>
      <td><input type="text" name="Qty" id="Qty" value="1" style="width: 20px; text-align: right" /></td>
    </tr>       
  </table>    
  <div class="cleaner h20"></div>

  <input type="hidden" name="pricetag" value="£25.00" id="hiddenpricetag" />
  <input type="hidden" name="size" value="12 inch" id="hiddensize" />
  <input type="hidden" name="pid" id="id" value="<?php echo $id; ?>" />
  <input type="Submit" class="button" name="button" id="button" value="Add to shopping cart"/>
</form> 

编辑:

刚刚注意到表单使用 javascript 在更改 SELECT 数据时更改 TD 元素 HTML 数据。

为了确保表单发布了 TD 元素中的正确数据,您需要将 ID 标记添加到隐藏的输入字段,以便您可以编写 javascript 来更新这些以及 TD 元素。

我已将 ID 添加hiddenpricetaghiddensize两个隐藏字段中。

你的 javascript 函数应该有点像这样:

function addCharge(select, elemIndex)
{
    var item = select.getElementsByTagName('option')[elemIndex];
    var price = document.getElementById('pricetag');
    var sizeDOM = document.getElementById('item');

    var hiddenpricetag = document.getElementById('hiddenpricetag');
    var hiddensize = document.getElementById('hiddensize');

    var finalPrice = "";

    /* Getting the price and showing it up */
    finalPrice = parseFloat(item.text.substring(11, item.text.length-1));

    /* We set a default £25.00 value */
    if(isNaN(finalPrice)) finalPrice = "25";

    /* we add decimal */
    price.innerHTML="£"+finalPrice+".00";

    /* Getting the size and showing it up */
    var size = item.text.substring(0,7);
    sizeDOM.innerHTML = size;

    /* Altering the hidden field values */
    hiddenpricetag.setAttribute("value", "£"+finalPrice+".00");
    hiddensize.setAttribute("value", size);
}

JSFiddle 可以在这里找到:http: //jsfiddle.net/J4rXX/7/

于 2013-06-01T00:15:35.170 回答