-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リクエストを実行して、入力ボックスのデータをサーバーに送信し、取得する必要があります。応答。

ブラウザ側の入力ボックスのテキストを処理できれば、簡単になります。

どちらの場合も、ボタンのtype属性submitをに置き換えて、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 に答える