在具有值的表单中使用图像作为选项

Posted

技术标签:

【中文标题】在具有值的表单中使用图像作为选项【英文标题】:Using an image as an option inside a form with a value 【发布时间】:2014-01-10 16:11:53 【问题描述】:

这个脚本是我朋友写的,但他暂时没空去寻求帮助,所以我想看看能不能在这里得到一些。我只知道 html + CSS

让我列出一些我拥有的代码。

$prod = $_POST['prod'];
header("Location: inc/paypal.php?username=". $username ."&prod=". $prod);

页面下方

<input type="text" value="<?php echo $data['username']; ?>" name="username" disabled>
<form method="post">
 <select name="prod">
  <option value="1">Product 1 - $1.00</option>
  <option value="2">Product 2 - $19.99</option>
  <option value="3">Product 3 - $29.99</option>
  <option value="4">Product 4 - $39.99</option>
  <option value="5">Product 5 - $49.99</option>                  
 </select>
</form>
<input type="submit" name="submit1" value="Pay Via PayPal" />

我怎样才能使用图像作为选项来选择,而不是使用下拉菜单,例如:

<div id="img_display">
 <img src="img/product-1.png" value="1">
 <img src="img/product-2.png" value="2">
 <img src="img/product-3.png" value="3">
</div>

我希望能够选择图像并获取值并将其转发到 $prod 变量。

我环顾四周,发现了这样的东西 http://jsfiddle.net/9rFKB/

但如果没有良好的 javascript 或 PHP 知识,我的处境就很艰难。有什么建议吗?

【问题讨论】:

【参考方案1】:
<input type="hidden" name="prod" id="prod">
<div id="img_display" onclick="document.getElementById('prod').value=event.target.name">
 <img src="1.jpg" name="1">
 <img src="1.jpg" name="2">
 <img src="1.jpg" name="3">
</div>

注意img 元素没有任何属性 value。因此需要使用idname

在服务器端提交表单后,您可以获取prod的值,如下所示-

$prod=$_REQUEST['prod'];

【讨论】:

【参考方案2】:

html:

<form>
    <input type="hidden" name="prod"> 
    <div id="thumbs">
        <!-- Dynamically created thumbnails start -->
        <img id="pic-1" src="url">
        <img id="pic-2" src="url">
        <img id="pic-3" src="url">
        <!-- Dynamically created thumbnails end -->
    </div>
</form>

js:

$('#thumbs').delegate('img', 'click', function() 

    var $this = $(this);
    // Clear formatting
    $('#thumbs img').removeClass('border-highlight');

    // Highlight with coloured border
    $this.addClass('border-highlight');

    // Changes the value of the form field "prod" to the value of img.id
    $('[name="prod"]').val( $this.attr('id').substring($this.attr('id').lastIndexOf('-')+1) 

);

小提琴link

解释: js/jquery 在#thumbs 中的所有img 上捕获click

然后移除所有高亮效果并添加到特定的,

然后它获取图像$this 并获取它的id 值,它在- 符号处将其拆分并获取scondpart(值)并将&lt;input type="hidden" name="prod"&gt; 的值设置为它。

您不必更改任何 php,因为 &lt;input type="hidden" name="prod"&gt; 发送到 $_POST['prod'] name 属性可以解决问题

如果您使用小提琴版本,只需删除警报行...这只是出于调试原因,因为 js 不提供适当的调试机制

【讨论】:

你能做个小提琴演示一下吗? 啊,我明白了,但是如何将ID 的值转发到$prod = $_POST['prod']; 中的变量$prod &lt;input type="hidden" name="prod"&gt; name 参数链接到$_POST['prod'] 精彩的解释。 我使用了她发现的内容并对其进行了调整... ofc 你的解决方案更简单;)

以上是关于在具有值的表单中使用图像作为选项的主要内容,如果未能解决你的问题,请参考以下文章

Javascript将具有多个值的选定选项从一个列表移动到另一个列表

无法发布具有许多(超过 256 个)值的表单

使用提供 HTML 输出的文本格式选项创建表单输入

提交令牌在 Drupal 7 的 Webform 中不作为密钥,它具有价值

如何在具有 null 值的 Angular 选择元素上使用默认的“请选择”选项进行验证?

如何使用 jquery 创建具有来自动态创建的表单字段的值的多维数组?