6

HTMLフォームに送信ボタンのあるリストボックスがあります。リストボックスでは複数選択が有効になっています。リストボックスで複数の値を選択できますが、フォームが送信されたときにどの値が選択されたかを把握する方法がわかりません。また、JavaScript を使用してユーザーが生成した値をリスト ボックスに動的に追加しています。フォームが送信されたときに次の 2 つのことを伝えられるようにしたいと考えています。

  1. ユーザーがボックスに追加したオプションは何ですか?
  2. ユーザーがボックスで選択した値は?

これは可能ですか?ありがとう。

4

2 に答える 2

36

末尾に角括弧を付けて名前を付けるselectと、PHP (およびおそらく他のサーバー言語) はデータを配列に入れます。

元:

<form action="process.php" method="post">
  <select name="multiSelects[]" multiple="multiple" size="5">
    <option value="0">Zero</option>
    <option value="1">One</option>
  </select>
  <input type="submit" />
</form>

選択は配列で利用可能になります$_POST['multiSelects']

于 2008-12-19T03:30:11.103 に答える
4

以下に、ページの例を示します。

ご了承ください:

  • select 要素 (および任意のフォーム要素) には、投稿に含める名前が必要です。
  • select 要素で選択されたオプションのみが投稿されます。

ユーザーがボックスで選択した値は?

ユーザーがフォームを送信すると、選択した値のみがサーバーに送信されます。サーバーで使用している言語に応じて、それらにアクセスするさまざまな方法があります。

ユーザーがボックスに追加したオプションは何ですか?

前に述べたように、選択されたオプションのみが表示されます。しかし、あなたのオプションとユーザーのオプションをどのように区別するのでしょうか? それは、ユーザーに送信するデータによって異なります。普遍的な答えは、送信しなかった値が返されるということです。ただし、これはデータによっては単純化できます。オプションには値とテキストの両方のプロパティがあるため、事前に生成された値に数値を使用する方法の 1 つです。そうすれば、返信では値が数値になり、ユーザーの値はテキスト文字列になります。このアプローチは、ユーザーが数値だけを入力しないことを前提としています。もう 1 つの方法は、ユーザーが生成したすべての値にプレフィックスを追加することです (すべてのオプションに値とテキスト フィールドの両方があることに注意してください)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Test of select box</title>
    <script type="text/javascript">
      function addOpt(e) {
        var o=document.createElement("option");
        //o.value= -e.options.length;
        o.text = "Test " + e.options.length;
        o.selected=true;
        e.add(o,null);
      }
    </script>
  </head>
  <body>
    <form method="post" action="mypage.html">
      <input type="button" onclick="addOpt(this.form.myselect)" value="Add option"/>
      <br/>
      <select id="myselect" name="mydata" multiple="multiple" size="10">
        <option value="0">Test 0</option>
        <option value="1">Test 1</option>
        <option value="2">Test 2</option>
      </select>
      <br/>
      <input type="submit"/>
    </form>
  </body>
</html>
于 2008-12-19T02:56:52.373 に答える