发布多个多选框

时间:2012-01-12 20:27:26

标签: php forms xhtml multiple-select

我有一个表格,我用它来创建一周的时间范围。现在选择星期几,开始时间和结束时间。我有javascript附加这个相同形式的新分组,每个元素都用数组命名。

<label>Day Of Week:</label> <select name="dow[]" multiple="multiple" size="5"><option value="sun">sun</option><option value="mon">mon</option><option value="tue">tue</option><option value="wed">wed</option><option value="thu">thu</option><option value="fri">fri</option><option value="sat">sat</option></select><br />
<label>Start Time</label> Hour: <select name="starthour[]"><option value="0">12 AM</option><option value="1">1 AM</option><option value="2">2 AM</option><option value="3">3 AM</option><option value="4">4 AM</option><option value="5">5 AM</option><option value="6">6 AM</option><option value="7">7 AM</option><option value="8">8 AM</option><option value="9">9 AM</option><option value="10">10 AM</option><option value="11">11 AM</option><option value="12">12 PM</option><option value="13">1 PM</option><option value="14">2 PM</option><option value="15">3 PM</option><option value="16">4 PM</option><option value="17">5 PM</option><option value="18">6 PM</option><option value="19">7 PM</option><option value="20">8 PM</option><option value="21">9 PM</option><option value="22">10 PM</option><option value="23">11 PM</option></select>Minute: <select name="startmin[]"><option value="0">0</option><option value="15">15</option><option value="30">30</option><option value="45">45</option></select> <br /> 
<label>End Time</label> Hour: <select name="endhour[]"><option value="0">12 AM</option><option value="1">1 AM</option><option value="2">2 AM</option><option value="3">3 AM</option><option value="4">4 AM</option><option value="5">5 AM</option><option value="6">6 AM</option><option value="7">7 AM</option><option value="8">8 AM</option><option value="9">9 AM</option><option value="10">10 AM</option><option value="11">11 AM</option><option value="12">12 PM</option><option value="13">1 PM</option><option value="14">2 PM</option><option value="15">3 PM</option><option value="16">4 PM</option><option value="17">5 PM</option><option value="18">6 PM</option><option value="19">7 PM</option><option value="20">8 PM</option><option value="21">9 PM</option><option value="22">10 PM</option><option value="23">11 PM</option></select>Minute: <select name="endmin[]"><option value="0">0</option><option value="15">15</option><option value="30">30</option><option value="45">45</option></select> <br />

此表单是使用javascript生成的,因此可以提交多个规则。除了多选框外,一切正常。

如果用户在规则1中选择了mon和wed,并且在规则2中选择了tue,则它们将合并到表单上的相同数组中。因此$ _POST的转储将显示:

Array ( [dow] => Array ( [0] => mon [1] => wed [2] => tue ) [starthour] => Array ( [0] => 0 [1] => 15 ) [startmin] => Array ( [0] => 0 [1] => 0 ) [endhour] => Array ( [0] => 5 [1] => 17 ) [endmin] => Array ( [0] => 0 [1] => 0 ) [do] => add [act] => scheduler [mod] => availability [avtype] => perm )

我无法确定dow中的数据来自哪个规则。我不相信我做了任何外在的错误。目前我唯一的解决方案是只允许选择一天。然而,人们通常在多天内拥有相同的时间。如果可能的话,最好包含这个功能。

2 个答案:

答案 0 :(得分:1)

在您的javascript中,使用ID唯一地命名每个表单 - 如果有多个表单,这将有效,但可能不是最佳解决方案。

也许最好的办法就是在你的javascript表单生成中添加var i;名称= I + “陶氏[]” 所以你可以识别各个表单元素。我不相信你可以用相同的名字区分同一表格上的表格元素,至少不能在帖子上。您可以使用javascript pre-post循环遍历这些元素,并在帖子上分配唯一标识符。

答案 1 :(得分:0)

我会这样做..对于每个规则,我将获得一个时间戳,生成的表单中的选择元素将如下所示..

    select name="dow[timestamp][]" ...     

所以你的所有规则现在都有独特的数组。

您可以使用以下代码获取时间戳。

function microtime (get_as_float) 
{
    var now = new Date().getTime();
    return now;
}