【问题标题】:PHP - Get colour input value [closed]PHP - 获取颜色输入值
【发布时间】:2016-07-05 19:40:58
【问题描述】:

我目前正在制作一个包含一些动态添加的 <input type='color'> 字段的表单,我想将它们的值发布到另一个 php 文件中。

我怎样才能做到这一点?没有 JavaScript 也可以吗?

示例输入:

<input name='ID From database' type='color' id='colorpicker' value='value from DB'>

JS:

var color = $('#colorpicker').val();
colorpicker = $('#colorpicker');
$('#colorpicker').on('change', function() {
  colorpicker.value(this.value);
});

【问题讨论】:

  • 你有没有尝试过什么??
  • 发布您的代码以获得帮助。
  • 为什么多个输入字段会成为 Javascript 解决方案的问题?除此之外,是的,当然可以在提交表单后在 php 上。但是你到底想让人们做什么,为你写代码?
  • 我不太确定你想做什么。你能解释一下你想做什么吗?
  • 您可以按原样发布它们的值。您不需要任何 Javascript。浏览器将发送值,您需要做的就是在 PHP 端正确处理数据。您可能希望转储 POST 超全局变量以查看接收到的数据。

标签: javascript php


【解决方案1】:

您可以通过使用包含以下内容的 onclick 函数设置隐藏输入的值来提交 Hex 值:

      document.getElementById('colorpicker_value').value = document.getElementById('colorpicker').value;

或者放

      colorpicker_value.value(this.value);

如果您不想直接从颜色选择器中获取值,请在脚本中设置隐藏输入的值 -

      <input type="hidden" name="colorpicker_value"/>

或者您可以给颜色选择器一个“名称”name="colorpicker",这样您就可以根据上面的 cmets 直接将其值作为 $_POST['colorpicker'] 变量来获取。

如果您在从 PHP 交付页面时知道这些值,则可以预加载它们:

      <input type="color" class="colorpicker" name="colorpicker<?php echo htmlspecialchars($unique_number); ?>" value="<?php echo htmlspecialchars($value_from_DB); ?>">

假设您的数据库中的值是十六进制值。

如果您要提交多个颜色选择器,只要为每个颜色选择器指定一个唯一的名称,您就可以在 PHP 中独立地收集它们的值,而不管它们的类或 ID。

然后您可以通过将其转换为 RGB 并查找使用数组生成的值来查找十六进制值,如这些 SO 答案所示:

Function that converts hex color values to an approximate color name?

这是在同一页面上从Jake 指向更大的值 Hex/RGB 到 Text 数组的链接 - 它没有得到很多选票,但看起来他花了很多功夫。

您也许可以创建自己的数组并使用此十六进制颜色名称列表直接查找十六进制值http://www.w3schools.com/colors/colors_names.asp

顺便说一句,如果有任何问题,ie8 中根本不会出现颜色选择器元素 - 它只显示为文本输入 - 让我困惑了一段时间。

【讨论】:

  • 感谢您,但尽管它是正确的,但我已经找到了解决方案。这是我的操作文件中的一个错误
  • @Deimantas 很高兴知道这一点 - 我很高兴将它们整合在一起。
【解决方案2】:

您只需将数据发布到 php 页面,然后插入到您的数据库中。

例子

//html page
<form action="receive.php"> 
   <input type="text" name="color1">
   <input type="text" name="color2">
   <button type="submit">Submit</button>
</form>

//php page
<?php
$color1=$_POST['color1'];
$color2=$_POST['color2'];

//the inserts depend on what type of method you want to interact with the db but here is a pdo example

$db = new PDO("mysql:host=YOURHOST;dbname=YOURDB",YOURUSER,YOURPASSWORD);

$statement = $link->prepare("INSERT INTO YOURTABLE(color1, color2)
    VALUES(:color1, :color2)");
$statement->execute(array(
    "color1" => $color1,
    "color2" => $color2
));

【讨论】:

  • 是的,但输入是 type='color',我想得到它的值,而不是 type='text'
  • 并且这些字段是动态添加的
猜你喜欢
  • 2017-02-24
  • 2023-03-15
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 2012-07-08
  • 1970-01-01
相关资源
最近更新 更多