3

実際、私は自分の<li>要素をフォームの一部として使用しようとしているリストを使用しています。私は以下のようなことをしています:-

<form action="index.php" method="post">
  <input type="hidden" name="search-type" value="commercial">
    <ul>
    <li name="search-option" id="buy" value="buy">inputBUY</li>
    <li name="search-option" id="rent" value="rent">RENT/LEASE</li>
    <li name="search-option" id="pg" value="pg">PG</li>
    </ul>
  <input type="submit" value="Submit" name="submit">
</form>

しかし、このフォームを送信すると、URL に "search-option" が表示されないということは、php スクリプトに "search-option" の値を取得していないことを意味します。

<input >要素を使用せずにこれを行う方法はありますか。

4

4 に答える 4

2

簡潔で直接的な答えはノーです。でも....

多くの場合、これを使用すると、リスト項目にいくつかの JavaScript が添付されていることがわかります。クリックすると、javasctipt は非表示のフォーム フィールドをクリックした値で更新します。

valueの標準属性ではないことにも注意してください。li

jQueryでこれを行う方法の例を次に示します。

HTML を次のように更新します。

<input type="hidden" id="search-type" name="search-type" value="commercial">
<ul id="selType">
   <li name="search-option" id="buy" value="buy">inputBUY</li>
   <li name="search-option" id="rent" value="rent">RENT/LEASE</li>
   <li name="search-option" id="pg" value="pg">PG</li>
</ul>

そして、次を使用します(jQueryが必要で、$(document).readyについて学ぶ必要があります

//Assign the value
$("#selType li").click(function(){
    $("#search-type").val($(this).attr("value"));
});

ここで実際に見てください:http://jsfiddle.net/Xcgw4/

プレーンな javasript を使用することもできますが、このデモでは jquery ライブラリを使用します。

また、クリックされたものなどを示すために何かをしたいと思うでしょう。

于 2013-10-04T04:27:09.390 に答える
0

適切なフォーム コントロールを使用する必要があります。liを次のselectように置き換えます。

<form action="index.php" method="post">
 <select name="search-option">
  <option value="buy">BUY</option>
  <option value="rent">RENT/LEASE</option>
  <option value="pg">PG</option>
 </select>
 <input type="submit" value="Submit" name="submit">
</form>

またはradioこのような:

    <form action="index.php" method="post">
     <input type="purchaseType" name="buy" value="buy">BUY<br>
     <input type="purchaseType" name="rent" value="rent">RENT/LEASE<br>
     <input type="purchaseType" name="pg" value="buy">PG<br>
     <input type="submit" value="Submit" name="submit">
    </form>
于 2013-10-04T06:39:06.170 に答える