1

我有以下情况 -

用户单击图像以搜索特定品牌的车辆。然后该图像的值必须进入隐藏框,我会将返回的值发布到另一个表单。我似乎无法获得返回的值...

我的代码...

<form action="searchbrand.php" method="POST" name="frmbrand">
 <!--First row of logos...-->   
 <table class="whitelogo">
  <tr>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Alfa Romeo" src="images/carlogos/alfa.jpg" height="55px" width="55px" title="View our Alfa Romeo Selection" alt="Alfa Romeo" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Aston Martin" src="images/carlogos/aston.jpg" height="55px" width="55px" title="View our Aston Martin Selection" alt="Aston Martin" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Audi" src="images/carlogos/audi.gif" height="55px" width="55px" title="View our Audi Selection" alt="Audi" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Bentley" src="images/carlogos/bentley.jpg" height="55px" width="55px" title="View our Bentley Selection" alt="Bentley" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="BMW" src="images/carlogos/bmw.gif" height="55px" width="55px" title="View our BMW Selection" alt="BMW" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Cadillac" src="images/carlogos/cadillac.jpg" height="55px" width="55px" title="View our Cadillac Selection" alt="Cadillac" onClick="javascript:document.submitForm.submit();" />
    </td>
 </tr>
</table>

正如您将在此处注意到的那样,我已将图像命名为“品牌”,每个图像都有单独的值。

 <input type="hidden" name="hidbrand" value="<?=$_POST['brand'];?>"/>
 </form>

我试图从用户点击的任何图像中捕捉这里的价值......

在我的 searchbrand.php 页面中,它将根据返回的值做一些事情,以下...

 <?php
 include 'init.php';
 $vehicle_brand = $_POST['hidbrand'];
 echo $vehicle_brand, '</br>';
 ?>

什么都没有返回,没有错误,没有价值,像我一样都是空白的 :) 任何人都知道我要去哪里混乱?

4

4 回答 4

6

从 hidbrand 中删除<?=$_POST['brand']?>并将所有图像输入类型中的 onClick 替换为:

javascript:document.forms['frmbrand'].hidbrand.value = this.value;

这将简单地用用户单击的图像的值填充隐藏元素,然后自动提交表单。

您目前在 onClick 中使用的当前javascript(提交表单)没有实际意义并且不需要,因为图像输入类型在单击时会自动提交表单。

于 2012-11-07T15:59:07.670 回答
3

请为图像提供不同的 id。在一个页面中,表单元素的名称可以相同。但每个表单元素的 id 应该是唯一的。如果您为超过 1 个元素提供相同的名称,那么它将返回数组作为 post 值。您可以使用 jquery 来获取值,例如

    $('input[name="brand"]').onclick(function(){alert($(this).attr('alt'));}

这将提醒用户单击的图像的 alt 属性。

只需使用var_dump() 查看 $_POST 中的内容:

var_dump($_POST);

您会看到,当您的表单使用input type="image">

这将返回类似的数组

array 'brand_x' => string '0' (length=1) 'brand_y' => string '0' (length=1)'

这样您就可以$_POST[brand_x]用来获取第二种形式的值

于 2012-11-07T15:23:25.720 回答
1

当您单击图像输入时,它会提交表单,因此它可能在设置 hidinput 的值之前提交。

查看 $_POST - IIRC 中包含的内容,您将收到与在图像上单击的 x 和 y 位置相对应的值。您可以使用它来判断单击了哪个图像,而无需执行任何 Javascript 来执行此操作。

于 2012-11-07T15:17:51.280 回答
1

当我正确理解你时,这应该是一个例子:

<!doctype html>
<html><head></head>
<body>
    <form action="searchbrand.php" method="POST"
        name="frmbrand" onsubmit="return false;">
        <input type="image" name="brand" id="brand" value="Alfa Romeo" 
            src="images/carlogos/alfa.jpg" height="55px" width="55px" 
            title="View our Alfa Romeo Selection" alt="Alfa Romeo" 
            onClick="document.submitForm.hidbrand.value=this.value; document.submitForm.submit();" />
    </form>
    <form action="http://www.stackoverflow.com/" method="POST" name="submitForm">
        <input type="text" name="hidbrand" value="" />
    </form>
</body>
</html>

首先取消包含图像的表单上的提交:

... onsubmit="return false;" ...

然后在提交之前将值复制到submitForm中的隐藏字段(在我的示例中,出于调试目的,我没有隐藏hidbrand字段):

... onClick="document.submitForm.hidbrand.value=this.value; document.submitForm.submit();" ...

第一个表单实际上不必是表单,因为它不应该提交。您可以使用带有onclick处理程序的纯图像。

于 2012-11-07T15:24:05.753 回答