-1

我有一个带有许多潜在输入框的表单,但是我只希望在单击前一个输入框旁边的按钮时显示它们。这是我的意思的一个小想法:

<form>
  <input name='box1'><input type='submit' name='button1' value='show box 2'>
  <input name='box2'><input type='submit' name='button2' value='show box 3'>
  <input name='box3'><input type='submit' name='button3' value='show box 4'> .......

等等

这可以用 PHP 完成还是我应该使用 JavaScript 或其他东西?任何建议将不胜感激。谢谢

4

3 回答 3

7

我会使用 jQuery 或纯 JavaScript 来做到这一点。JavaScript 是一种客户端语言,非常适合获取点击和事件。PHP 是服务器端,用于页面处理和数据处理。我会将输入包装在 div 中并在点击时隐藏和显示它们。

于 2013-01-01T22:34:40.680 回答
1

是的,这可以通过 PHP 来完成,但如果你想让它看起来不错,请使用 javascript。

无论如何,php中一个丑陋的伪解决方案:

$Step = 1;
if(isset($_POST['step']))
    $Step = $_POST['step'];

switch($Step) {
    case 2:
        echo '<input name="box2">';
        break;
    case 3:
        echo '<input name="box3">';
        break;
    // ...
    default:
        echo '<input name="box1">';
}
echo '<input type="hidden" name="step" value="'.($Step + 1).'">';
echo '<input type="submit" name="submit" value="Next">';

但是,在 javascript 中它看起来更好并且更容易实现。

于 2013-01-01T22:34:11.973 回答
0

如果你想避免页面重新加载,你需要使用浏览器端的 JavaScript 来显示新的输入框。

如果您需要在新的输入框出现之前由您的服务器端 PHP 脚本处理输入框的文本,您将需要在按钮单击时发出 ajax 请求,以将输入框的数据发送到服务器并获取一个答复。

如果您可以在浏览器端处理输入框的文本,它会变得更简单。

在这两种情况下,您都需要将submit按钮的 type 属性替换button为获取没有默认行为的按钮。然后,您可以将单击处理程序添加到按钮。使用 jQuery,如果您不想处理文本(将其放在表单之后),这将类似于以下代码段:

<script>
$('input[type^="button"]').click(function() {
    var button_number = $(this).attr("name").split("button")[1];
    var box_number = parseInt(button_number) + 1;
    $('input[name="box' + box_number + '"]').show();
});
</script>

对于可见性的初始化,您可以使用以下 CSS:

input[name^="box"] {
  display:none;
}
input[name="box1"] {
  display:inline;
}

这是jsfiddle:http: //jsfiddle.net/SjXH9/27/

您可以将最后一个按钮设置为提交按钮,以提交整个表单。

于 2013-01-01T23:26:23.800 回答