【问题标题】:reading option of three select tags with same name三个同名选择标签的读取选项
【发布时间】:2009-07-14 15:16:35
【问题描述】:

我怎样才能拥有三个或更多同名的选择标签(如在我的程序中,选择标签是动态生成的),并独立选择选择的选项。 我有一个循环,我的 php 读取一个 sql 表,并为每一行创建一个选择标记和一个按钮。

<select name="vote">
    <option value="1">1</vote>
    <option value="2">2</vote>
    <option value="3">3</vote>
</select>

<input type="button" onclick="vote()">

假设我的 sql 表中有 3 行,因此将创建 3 个带有按钮的选择标签。

现在我的问题是我如何才能看到哪个选择标签选择了哪个选项??

谁能帮帮我。

泽山

【问题讨论】:

    标签: php javascript html


    【解决方案1】:

    如果它们具有相同的名称,那么区分它们的唯一方法是让它们的所有值对于特定的选择元素都是唯一的。

    如果这不可能,那么您必须给它们起不同的名称(例如name="vote[&lt;?php echo $row_id; ?&gt;]")。

    此外,PHP 的一项“功能”要求,如果您有多个同名元素,则名称必须以字符“[]”结尾,以便访问多个提交的值。

    【讨论】:

      【解决方案2】:

      当表单中有多个元素具有相同的name 属性时,它们将成为 DOM 中的集合(本质上是一个数组)。

      所以你可能有一个这样的选择

      <form name="test">
        <select name="example"></select>
      </form>
      

      你可以像这样访问 select 元素

      document.forms.test.example;
      

      现在,如果你有 2 个或更多,像这样

      <form name="test">
        <select name="example"></select>
        <select name="example"></select>
        <select name="example"></select>
      </form>
      

      你可以像这样在 DOM 中访问它们

      document.forms.test.example[0];
      document.forms.test.example[1];
      document.forms.test.example[2];
      

      编辑

      哦,在 PHP 端,它不会识别多个值,除非您在名称中添加 [] - 这告诉 PHP 不要替换相同键名的值,而是将它们用作数组。

      <form name="test">
        <select name="example[]"></select>
        <select name="example[]"></select>
        <select name="example[]"></select>
      </form>
      

      然后,你会像这样读取这些值

      <?php
      
      $exampleArray = $_GET['example'];
      // you can now loop over $exampleArray or whatever.
      

      【讨论】:

        【解决方案3】:

        如果您需要三个独立的&lt;select&gt;s,它们必须包含相同的&lt;option&gt; 值,那么您需要有不同的name 属性,至少如果您想保持简单的话。 如果——然而——你可以使用一些 JS/jQuery,那么你可以为这些&lt;select&gt;s 设置三个不同的id,并使用 AJAX“模拟”不同的名称。像这样的:

        var v1 = $("#select1").val();
        var v2 = $("#select2").val();
        var v3 = $("#select3").val();
        
        $.ajax({
          type: "POST",
          url: "someurl.php",
          data: "select1="+v1+"&select2="+v2+"&select3="+v3,
          success: function(msg){
            alert( "Data Saved: " + msg );
          }
        });
        

        【讨论】:

          【解决方案4】:
          <script>
          function vote(){
              var sIdx=document.getElementById('vote').selectedIndex;
              alert(document.getElementById('vote').options[sIdx].value);
          }
          
          </script>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-04-08
            • 2017-02-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多