0

<select>フィールドと<input type='text'>フィールドの両方を $_GET メソッドと一緒に使用しようとしています。基本的に私は次のようなものを望んでいます:

<select>
    <option name='artist'>Artist</option>
    <option name='song'>Song</option>
</select>
<input type='text' name='value' />

そして、うまくいけば、選択したものとして、?artist=valueまたはそれに?song=value応じてリダイレクトされます。これが理にかなっていることを願っています。

4

2 に答える 2

2

いいえ、それはできません。直接ではありません。

name属性をselect要素にアタッチする必要があります。$_GETが含まれyour_select_name=option_valueます。

次に、バックエンドで$_GET['type']andを関連付けるだけです。$_GET['value']

<form method="GET">
<select name="type">
    <option value='artist'>Artist</option>
    <option value='song'>Song</option>
</select>
<input type='text' name='value' />
</form>

<?php 
    echo $_GET['type']; // 'artist' or 'song'
    echo $_GET['value']; // value of text input

PS: URL の形成について厳密にする必要がある場合は、2 つの入力を提供し、選択した選択に関連しない入力を非表示にする単純な JS スクリプトを作成することができます。

実際、このアイデアには少し工夫が必要です。

<form method="GET">
    <select id='type'>
        <option name='artist'>Artist</option>
        <option selected name='song'>Song</option>
    </select>
    <input class='inp' id='song' type='text' name='song' />
    <input class='inp' style='display:none' id='artist' type='text' name='artist' />
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
    $('#type').change(function() {
         $('.inp').val('').hide().prop('disabled', true); // hide and clear both inputs
         $('#'+$('#type').val() ).prop('disabled', false).show(); //show input corresponding to your select
         // Note the prop('disabled') calls - you want to disable the unused input so it does not add an empty key to your query string.
    }
</script>
于 2013-07-09T14:11:46.577 に答える
0

<select>タグに name 属性をつけたほうがいいと思います。

<select name="Category">
    <option>Song</option>
    <option>Artist</option>
</select>
<input type="text" name="Value"/>

次に、選択された例 (PHP) を検証するのはかなり簡単なはずです。

if($_GET['Category'] == "Song")
{
    //Do stuff here with $_GET['Value']
}
else if($_GET['Category'] == "Artist")
{
    //Do stuuf here with $_GET['Value']
}
于 2013-07-09T14:21:01.750 に答える