0

我有一个表格,我用它来创建一周的时间范围。现在它是选择星期几,开始时间和结束时间。我有 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 中的数据来自哪个规则。我不相信我在做任何表面上的错误。目前我唯一的解决办法是只允许选择一天。然而,人们在多天内有相同的时间是很常见的。如果可能的话,最好包含这个功能。

4

2 回答 2

1

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

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

于 2012-01-12T20:34:16.300 回答
0

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

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

所以你所有的规则现在都会有唯一的数组。

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

function microtime (get_as_float) 
{
    var now = new Date().getTime();
    return now;
}
于 2012-01-12T20:37:24.317 回答