多个FORM选择语句

时间:2016-06-21 19:29:24

标签: html

我想我可能有一个独特的问题,或者至少我似乎无法在互联网上的任何地方找到答案。我有一个FORM,当在上面的选择选项上进行选择时,选择要显示的下一个选择选项。所以基本上我有多个具有相同名称的选项,但只有一组选择选项显示,这取决于我在之前选择的选项。问题是当我选择第一组中的select选项时,结果(值)总是显示为最后一个具有相同名称的select语句中的第一个选项。这是一个片段:

<label for="mainIssue" id="mainIssueLabel" class="labelTitle" style="display:none;">Main Issue:</label>

                <select name="mainIssue" id="warrantyFiltrationType" style="display:none;">
                        <option value="Type Filtration">Select One</option>
                        <option value="CP2000">CP2000</option>
                        <option value="RX">RX</option>
                        <option value="SFS">SFS</option>
                        <option value="SFX">SFX</option>
                        <option value="RP">RP</option>
                        <option value="Sand">SAND</option>
                </select>

                <select name="mainIssue" id="warrantyPumpType" style="display:none;">
                        <option value="Type Pump">Select One</option>
                        <option value="F350C">F350C</option>
                        <option value="F400C">F400C</option>
                        <option value="F600C-9">F600C GFCI 9</option>
                        <option value="F600C-18">F600C GFCI 18</option>
                        <option value="F700800C">F700C/800C</option>
                        <option value="F1000C">F1000C</option>
                        <option value="F1500C">F1500C</option>
                        <option value="F2000C">F2000C</option>
                        <option value="X600">X600</option>                  
                        <option value="X1000">X1000</option>
                        <option value="X1500">X1500</option>                        
                        <option value="CP2000C">CP2000C</option>
                </select>

假设出现的选择是过滤选择选项。无论我在过滤选择中选择哪个选项,该值始终显示为值&#34;类型泵&#34;,或最后一个选择中具有相同名称的第一个选项。

即使显示正确的选择选项,似乎只读取最后一个选择选项组。

任何线索?

2 个答案:

答案 0 :(得分:0)

您有多个具有相同name的表单元素:

<select name="mainIssue"
...
<select name="mainIssue"

将表单发布到服务器时,任何给定元素的name都是其“键/值对”中的“键”。因此,它必须在那个形式的帖子中是独一无二的。当浏览器构建表单帖子时,它找到的与前一个元素同名的任何元素都将覆盖表单post中的那个元素。 (此行为可能未定义且特定于浏览器。)

基本上,为表单输入元素提供唯一的名称。您可以通过以下任一方式执行此操作:

  • 拥有多个select个元素,其中包含唯一的name s。
  • 拥有一个select元素,您可以根据用户选择动态重新填充option

答案 1 :(得分:0)

如@David所述,如果您打算发布数据并且希望所有具有相同名称的选择字段将数据发布到服务器,那么您需要使用唯一的名称......

... OR

在name属性中,您需要在多个选择/输入的名称末尾添加[]。

使用您的代码的示例如下

<select name="mainIssue[]" id="warrantyPumpType" style="display:none;">

请注意,这将发布到服务器,其中mainIssue是每个数据集的数组。

请注意,您可能正在寻找另一个小变化..

<select name="mainIssue['warrantyFiltrationType']" id="warrantyFiltrationType" style="display:none;">

<select name="mainIssue['warrantyPumpType']" id="warrantyPumpType" style="display:none;">

请注意,我在这里所做的就是将你的id放入方括号中以“命名那些键”。当这个发布到服务器时,你的$ _POST数据(假设你使用php来捕获帖子)将是一个多数组,其中$ _POST ['mainIssue']是一个带有key =&gt;的数组。重视你的期望。

<强> - 编辑 -

为了更进一步,您可能希望“Select One”选项的值为null或为空......

...在服务器上,您只需检查mainIssue ['specificKey'],它的值不为空。使用此方法,您可以获取单个选定的值(从中选择所选的值)并将其存储到您需要的单个数据库字段中。

<强> - 编辑 -

php方面的一个例子是循环进入的数组,然后检查。

$mainIssue = ''; // This is what ever you want to default to before checking for the value of mainIssue
foreach($_POST['mainIssue'] as $key => $value) {
    if($value != '') { // If the value is empty, then they did not select an item in that specific select field
        $mainIssue = $value; // If the value was selected, then there would be a non-empty value somewhere in the multi-dimension array of mainIssue, and here is where we capture it
    }
}
// So at this point of the code $mainIssue variable has a value of what ever was selected, else what ever the default was set before the loop above

您可能希望确保“Select One”选项的value属性为空以使其生效(对于所有具有相同名称的选择)

            <select name="mainIssue[]" id="warrantyFiltrationType" style="display:none;">
                    <option value="">Select One</option>
                    <option value="CP2000">CP2000</option>
                    <option value="RX">RX</option>
                    <option value="SFS">SFS</option>
                    <option value="SFX">SFX</option>
                    <option value="RP">RP</option>
                    <option value="Sand">SAND</option>
            </select>