select标签中的选项可以携带多个值吗?

我在HTML表单中select了一些选项:
(数据将被收集和处理使用PHP)

testing:

<SELECT NAME="Testing"> <OPTION VALUE="1"> One <OPTION VALUE="2"> Two <OPTION VALUE="3"> Three </SELECT> 

是否有可能让一个选项携带多个值,例如当用户select“One”时,那么与此选项相关的其他一些值将被写入数据库。

我应该如何deviseSELECT标签,以便每个选项都可以携带一个以上的值:

 <SELECT NAME="Testing"> <OPTION VALUE="1" value="2010"> One <OPTION VALUE="2" value="2122"> Two <OPTION VALUE="3" value="0"> Three </SELECT> 

一种方式来做到这一点,第一个数组,第二个对象:

  <select name=""> <option value="{'num_sequence':[0,1,2,3]}">Option one</option> <option value="{'foo':'bar','one':'two'}">Option two</option> </select> 

编辑(回答3年后)将两个值都放入JSON格式(使用JSON.stringify() ),因为我抱怨说我的概念validation答案“可能会混淆新手开发人员”。

我实际上是想知道今天,我通过使用PHP爆炸function,如下所示:

HTML表单(在我名为'doublevalue.php'的文件中:

  <form name="car_form" method="post" action="doublevalue_action.php"> <select name="car" id="car"> <option value="">Select Car</option> <option value="BMW|Red">Red BMW</option> <option value="Mercedes|Black">Black Mercedes</option> </select> <input type="submit" name="submit" id="submit" value="submit"> </form> 

PHP的动作(在我名为doublevalue_action.php的文件中)

  <?php $result = $_POST['car']; $result_explode = explode('|', $result); echo "Model: ". $result_explode[0]."<br />"; echo "Colour: ". $result_explode[1]."<br />"; ?> 

正如您在第一段代码中看到的那样,我们正在创build一个标准的HTMLselect框,其中有两个选项。 每个选项都有一个值,它有一个分隔符(在这种情况下,“|”)分裂值(在这种情况下,模型和颜色)。

在动作页面上,我将结果分解成一个数组,然后调用每个数组。 正如你所看到的,我将它们分开并贴上标签,以便看到造成的影响。

我希望这可以帮助别人:)

一个选项是用逗号分隔多个值

喜欢

 value ="123,1234" 

并在服务器端将它们分开

当我需要这样做的时候,我做了其他值的数据值,然后用js将它们分配给一个隐藏的input

 <select id=select> <option value=1 data-othervalue=2 data-someothervalue=3> //... </select> <input type=hidden name=otherValue id=otherValue /> <input type=hidden name=someOtherValue id=someOtherValue /> <script> $('#select').change(function () { var otherValue=$(this).find('option:selected').attr('data-othervalue'); var someOtherValue=$(this).find('option:selected').attr('data-someothervalue'); $('#otherValue').val(otherValue); $('#someOtherValue').val(someOtherValue); }); </script> 

它可能有一个select选项中的多个值,如下所示。

 <select id="ddlEmployee" class="form-control"> <option value="">-- Select --</option> <option value="1" data-city="Washington" data-doj="20-06-2011">John</option> <option value="2" data-city="California" data-doj="10-05-2015">Clif</option> <option value="3" data-city="Delhi" data-doj="01-01-2008">Alexander</option> </select> 

你可以使用jquery获得更改事件的选定值,如下所示。

 $("#ddlEmployee").change(function () { alert($(this).find(':selected').data('city')); }); 

你可以在这个LINK中find更多的细节

如果您的目标是将这些信息写入数据库,那么为什么您需要在value属性中包含主值和“相关”值? 为什么不把主要的值发送到数据库,让数据库的关系性质来处理其余的问题。

如果您需要在OPTION有多个值,请尝试一个不常见的分隔符:

 <OPTION VALUE="1|2010">One</OPTION> 

或添加对象文字(JSON格式):

 <OPTION VALUE="{'primary':'1','secondary':'2010'}">One</OPTION> 

这真的取决于你想要做什么。

为每个选项放置值

 <SELECT NAME="val"> <OPTION VALUE="1" value="1:2:3:4"> 1-4 <OPTION VALUE="2" value="5:6:7:8"> 5-8 <OPTION VALUE="3" value="9:10:11:12"> 9-12 </SELECT> 

在服务器端的情况下,使用PHP的爆炸[数组] = explode([delimeter],[公布价值]);

 $values = explode(':',$_POST['val'] 

上面的代码返回一个数组只有数字和':'被删除

HTML中不允许重复的标签参数。 你可以做什么,是VALUE="1,2010" 。 但是你将不得不parsing服务器上的值。

你可以使用多个属性

 <SELECT NAME="Testing" multiple> <OPTION VALUE="1"> One <OPTION VALUE="2"> Two <OPTION VALUE="3"> Three