HTML仅选择返回第一选项

时间:2009-11-04 22:13:35

标签: php html codeigniter

我在同一页面上有几个HTML <select>下拉菜单,用于略有不同的上下文中。它们都使用从数据库查询构建的php变量中存储和回显的相同选项数据。

我遇到的问题是一个工作并返回所选值,而另一个只返回第一个选项的值。

这是我的标记:

<select name="Home_State" id="Home_State">
  <?php echo $states;?>
</select>

有效的选项:

<option value="1">AL</option><option value="2">AK</option><option value="4">AZ</option><option value="5">AR</option><option value="6">CA</option><option value="8">CO</option><option value="9">CT</option><option value="10">DE</option><option value="11">DC</option><option value="12">FL</option><option value="13">GA</option><option value="15">HI</option><option value="16">ID</option><option value="17">IL</option><option value="18">IN</option><option value="19">IA</option><option value="20">KS</option><option value="21">KY</option><option value="22">LA</option><option value="23">ME</option><option value="24">MD</option><option value="25">MA</option><option value="26">MI</option><option value="27">MN</option><option value="28">MS</option><option value="29">MO</option><option value="30">MT</option><option value="31">NE</option><option value="32">NV</option><option value="33">NH</option><option value="34">NJ</option><option value="35">NM</option><option value="36">NY</option><option value="37">NC</option><option value="38">ND</option><option value="39">OH</option><option value="40">OK</option><option value="41">OR</option><option value="42">PA</option><option value="44">RI</option><option value="45">SC</option><option value="46">SD</option><option value="47">TN</option><option value="48">TX</option><option value="49">UT</option><option value="50">VT</option><option value="51">VA</option><option value="53">WA</option><option value="54">WV</option><option value="55">WI</option><option value="56">WY</option>

这是我无效的标记

<select name="Mail_State" id="Mail_State">
  <?php echo $states;?>
</select>

无法使用的选项

<option value="1">AL</option><option value="2">AK</option><option value="4">AZ</option><option value="5">AR</option><option value="6">CA</option><option value="8">CO</option><option value="9">CT</option><option value="10">DE</option><option value="11">DC</option><option value="12">FL</option><option value="13">GA</option><option value="15">HI</option><option value="16">ID</option><option value="17">IL</option><option value="18">IN</option><option value="19">IA</option><option value="20">KS</option><option value="21">KY</option><option value="22">LA</option><option value="23">ME</option><option value="24">MD</option><option value="25">MA</option><option value="26">MI</option><option value="27">MN</option><option value="28">MS</option><option value="29">MO</option><option value="30">MT</option><option value="31">NE</option><option value="32">NV</option><option value="33">NH</option><option value="34">NJ</option><option value="35">NM</option><option value="36">NY</option><option value="37">NC</option><option value="38">ND</option><option value="39">OH</option><option value="40">OK</option><option value="41">OR</option><option value="42">PA</option><option value="44">RI</option><option value="45">SC</option><option value="46">SD</option><option value="47">TN</option><option value="48">TX</option><option value="49">UT</option><option value="50">VT</option><option value="51">VA</option><option value="53">WA</option><option value="54">WV</option><option value="55">WI</option><option value="56">WY</option>

然后使用CI获取表单值:

 $Mail_State = $this->input->post('Mail_State');
 echo $Mail_State

无论选择了什么选项,都返回第一个选项的值。

6 个答案:

答案 0 :(得分:2)

啊,我刚刚设法解码你实际要问的内容 - 因为这个问题还不清楚。

第一个选项是指第一个HTML块(已经重复,在页面后面有不同的名称/ ID),而不是第一个<option>标记。

我实际上已经编写了一个测试程序,有或没有尾随/,以及默认选项(如<option selected="selected" value="4">AZ</option>),我仍然无法让它只返回第一个选择的选项标签。当我print_r($_POST)时,他们会返回单独的ID。

因此,我认为您的问题可能存在于其他地方。


How do I get all the results from a select multiple HTML tag?

<select name="var[]" multiple="yes">
.....
</select>

答案 1 :(得分:1)

我没有完全理解错误,但似乎你正在使用CodeIgniter,为什么不利用它的Form Helper,这可能会使你的代码更容易,也许也可以解决问题。

在你的控制器中试试这个:

$Home_State = $this->input->post('Home_State');
$Mail_State = $this->input->post('Mail_State');

在你看来:

echo form_dropdown('Home_state', $states, $Home_State);
echo form_dropdown('Mail_State', $states, $Mail_State);

答案 2 :(得分:0)

如果第一个选择的尾随/上方修复它,那么在短期内执行此操作,直到您可以弄清楚到底发生了什么。在你没有陷入困境之后,专注于解开谜团。另外,毛发多选,我相信你的名字属性应该在末尾有[]表示它将持有一个值数组,即name =“Mail_State []”

答案 3 :(得分:0)

一些事情:

  • 您的第一个选择在开始标记的末尾包含/。这将影响数据的提交方式。
  • 你可以发布页面的最终HTML(PHP的输出)。你所拥有的内容没有多大帮助,因为我们不知道选择中的选项是什么。还包括表格表。
  • 检查具有相同名称的任何其他字段。
  • 尝试在您提交的页面顶部执行print_r($_REQUEST),以查看值是什么。 (你正在使用的课程也可能不支持倍数。)

答案 4 :(得分:0)

是否还有其他表单输入在表单中也有相同的名称?有时它发生在我身上。我忘了在复制和粘贴多个表单输入后我没有更改其他表单名称。

答案 5 :(得分:0)

您的其他下拉列表是否可能在表单之外声明?