【问题标题】:HTML Select only returning First OptionHTML Select 仅返回第一个选项
【发布时间】:2009-11-04 22:13:35
【问题描述】:

我在同一页面上有几个 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

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

【问题讨论】:

  • 您能否为每个代码段包含生成的 HTML 输出的样子?
  • 第一个 "" 后面的 / 是 XHTML 来关闭标签(主要用于 '
    ' 和 '
    ') - 因此,有没有列出选择选项,只是不好的 XHTML。
  • 我没有注意到我遥控了 / 并且那个仍然有效。
  • 也许也将其从您的问题中删除。

标签: php html codeigniter


【解决方案1】:

啊,我刚刚设法破译了您实际要问的内容 - 因为问题很不清楚。

第一个选项是指第一个 HTML 块(已重复,在页面后面使用不同的名称/ID),而不是第一个 &lt;option&gt; 标记。

不过,我实际上已经编写了一个测试程序,带有和不带有尾随 /,以及带有默认选项(如 &lt;option selected="selected" value="4"&gt;AZ&lt;/option&gt;),但我仍然无法让它只返回第一个选择标记中的选项。当我print_r($_POST) 时,它们会返回单独的 ID。

因此,我相信您的问题可能出在其他地方。


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

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

【讨论】:

  • 请不要劫持我的问题
【解决方案2】:

我没有完全理解错误,但您似乎正在使用 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);

【讨论】:

    【解决方案3】:

    如果第一个选择的尾随 / 修复了它,请在短期内执行此操作,直到您弄清楚到底发生了什么。没有卡住之后,专注于解开谜团。另外,在进行多选时,我相信您的 name 属性末尾应该有 [] 以表明它将包含一个值数组,即 name="Mail_State[]"

    【讨论】:

    • 我没有注意到我在开始标签中有一个 /,我删除了它,但仍然有效的那个
    【解决方案4】:

    一些事情:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-04
          • 2021-07-21
          • 1970-01-01
          • 2011-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多