0

私がやりたいことは、ユーザーの選択に基づいてフィールドを作成する機能を作成することです

例えば;

<select name="ex">  
<option selected="selected" value="1">1</option>  
<option value="2">2</option>  
<option value="3">3</option>  
<option value="4">4</option>  
<option value="5">5</option>  
</select>

ユーザーが4を選択した場合、4つの入力フィールドを表示できるようにしたい

私の質問は、これを行うクエリをどのように作成するかということでした。

頭をガタガタさせて思いついたのは

if($ex='4') {
<input type="text" name="field4">
<input type="text" name="field4">
<input type="text" name="field4">
<input type="text" name="field4">
}

しかし、それらを表示する簡単な方法が必要です。何か案は?

4

8 に答える 8

5

for次のように loopを使用すると簡単になります。

for($i=1;i<=$ex;$i++){
 echo "<input type='text' name='field4[]'>";
}

お役に立てば幸いです。

于 2012-05-16T11:19:09.820 に答える
3

javascript を使用してオンザフライで実行することもできます: http://jsfiddle.net/fudQF/

Javascript:

showFields(t) {
    f = document.getElementById('fields');

    while (f.childNodes.length >= 1)
        f.removeChild(f.firstChild);

    for(i = 0; i < t.value; i++) {
        e = document.createElement('input');
        e.setAttribute('type','text');
        f.appendChild(e);

        e = document.createElement('br');
        f.appendChild(e);
    }        
}

HTML:

<select name="ex" onClick="showFields(this)">  
    <option selected="selected" value="1">1</option>  
    <option value="2">2</option>  
    <option value="3">3</option>  
    <option value="4">4</option>  
    <option value="5">5</option>  
</select>
<div id="fields">
</div>
​
于 2012-05-16T11:24:58.103 に答える
1
for($i=0;$i<$ex;$i++)
{echo '<input type="text" name="field'.$i.'">';}

これを試してください選択時にjavascriptのonchange関数を使用してこれを行うことができます

function chang()
{
for(var i=1;i<document.getElementById("select_id").value;i++)
document.body.innerHTML+='<input type="text" name="field"'+i+'>';
}
于 2012-05-16T11:19:36.087 に答える
1
for($i = 0; $ < 4; $i++)
{
   echo "<input type=\"text\" name=\"field".($i + 1)."\">";
}
于 2012-05-16T11:20:23.953 に答える
1
for ($i=1; $i<=$ex; $i++)
{
   echo "<input type=\"text\" name=\"field".$i."\">";
}

フィールドに一意の名前を付けます

于 2012-05-16T11:21:25.307 に答える
0

$ex=4 とします。

$ex=4;
for($C=1;$C<=$ex;$C++){ echo "<input type=\"text\" name=\"field".$C."\" />"; }
于 2012-05-16T11:26:58.020 に答える
0

そのifステートメントはPHPのようです(変数の前のドル記号)。出力する変数にエコーまたは保存したいと思います。

そのための方法は、繰り返しステートメント (for、while) を使用して、必要な回数だけそのことを行うことです。

まったく同じ出力を使用しているように見えるという事実に基づく別のオプションは、str_repeat()関数を使用することです。

field4[]それは少し奇妙に思えます..多分あなたは名前をfield4

于 2012-05-16T11:21:05.680 に答える
0

既存の回答に基づいて構築-jQueryは必要なコードの量をさらに削減できます-

HTML

<select name="ex" onClick="showFields(this)">  
    <option selected="selected" value="1">1</option>  
    <option value="2">2</option>  
    <option value="3">3</option>  
    <option value="4">4</option>  
    <option value="5">5</option>  
</select>
<div id="fields">
</div>

jQuery

$("select[name='ex']").on('change',function(){
  var selectedVal = $(this).val();
  $("#fields").html(''); // clear existing input fields (possibly from previous selection)
  for (var i=1; i<=selectedVal; i++){
    $("#fields").append('<input type="text" name="field'+i+'">');
  }
});
于 2012-05-16T11:32:46.163 に答える