脚本按顺序编号输入字段

时间:2014-04-15 11:44:10

标签: javascript php

我有一些相当大的表格,他们的输入需要按顺序编号。我需要为每个字段使用两次序列号,例如......

<label>Label for 17</label>
<textarea name="q[17]"><?=$dataarray['q17']?></textarea>

<label>Label for 18</label>
<input type="text" name="q[18]" value="<?=$dataarray['q18']?>">

<label>Label for 19</label>
<textarea name="q[19]"><?=$dataarray['q19']?></textarea>

是否可以使用脚本调用替换每个号码,这将为我添加数字?我遇到的主要问题是,如果我需要使用新字段更新表单,我需要手动重新编号每个后续输入。

由于输入类型不同,我无法使用php循环,而且字段之间还有其他文字和标签等。

4 个答案:

答案 0 :(得分:0)

当然,您可以在PHP中使用for()循环,如下所示:

function outputFields($num, $values)
{
    $html = '';
    for($i = 0; $i < $num; $i++)
    {
        $html.= '<textarea name="q['.($i + 1).']">'.$values['q'.($i + 1)].'</textarea>';
    }  
    return $html;
}

现在,您只需要回显此函数的返回值,并传入要生成的字段数,并将$datearray变量作为参数包含在内。

例如,要输出20个字段,您可以使用:

<?php echo outputFields(20, $datearray) ?>

答案 1 :(得分:0)

尝试:

for ($i = 0; $i < 20; $i++) {
  echo '<textarea name="q[' . $i . ']">' . $dataarray['q' . $i] . '"></textarea>';

}

答案 2 :(得分:0)

你可以

$max = 19; //Or whatever    
for( $i = 0; $i <= $max; $i++){ ?>
        <textarea name="q[<?php echo $i; ?>]"><?=$dataarray['q' . $i]?></textarea><?php
}

但你可能会更好地在$ dataarray上做一个foreach。取决于您的数据结构。

答案 3 :(得分:0)

你说&#34;我不能使用循环&#34;。我确实怀疑,因为你可以这样做:

<?php for($i = 0; $i < $max; $i++):
    <?php if($fieldtype == 'text'): ?>
        <input type="text" .... />
    <?php elseif($fieldtype == 'select'): ?>
        <select name="name">
           ... options
        </select>
    <?php else: ?>
         etc....
    <?php endif; ?>
<?php endfor; ?>

但无论如何,如果你坚持,你可以这样做:

<?php $num = 1; ?>
<label>Label for <?php echo $num; ?></label>
<textarea name="q[<?php echo $num; ?>]"><?=$dataarray['q'. $num++]?></textarea>

<label>Label for <?php echo $num; ?></label>
<input type="text" name="q[<?php echo $num; ?>]" value="<?=$dataarray['q'. $num++]?>">

etc..

诀窍是$num++,最后一次打印出当前号码&#39;时使用它。它是post-incrementor,意味着它在使用后会增加1。