0

フォームの送信時にチェックボックスが選択に基づいて異なるページを開くフォームが必要です。

だから、私はこの単純な形をしているとしましょう:

<form action="" method="post">
<input value="1" type="checkbox" name="sign" />     
<input value="2" type="checkbox" name="sign" />     
<input value="3" type="checkbox" name="sign" />     
<input value="4" type="checkbox" name="sign" />     
<input value="5" type="checkbox" name="sign" />     
<input type="submit" /> 
</form>

ユーザーが値1をチェックして送信すると、ページAにリダイレクトされます。ユーザーが1と4をチェックすると、別のページ(たとえば、ページF)にリダイレクトされます。ユーザーが2、3、4をチェックすると、ページRにリダイレクトされます。以下同様です... 25の異なる組み合わせがあるため、ユーザーがフォームを送信すると、このフォームのページ結果は25になります。

つまり、フォームが送信されると、システムはどのチェックボックスがオンになっているかを読み取り、可能な各組み合わせを異なるURLに関連付けます。

できますか?もしそうなら、どのように?誰かが似たようなものを作ったことがありますか?私は長い間解決策を探してきましたが、私が必要としているものとは正確に一致しない、わずかに類似したものしか見つかりませんでした。

4

5 に答える 5

1

HTML:

<form action="" method="post">
<input value="1" type="checkbox" name="sign[1]" />     
<input value="2" type="checkbox" name="sign[2]" />     
<input value="3" type="checkbox" name="sign[3]" />     
<input value="4" type="checkbox" name="sign[4]" />     
<input value="5" type="checkbox" name="sign[5]" />     
<input type="submit" /> 
</form>

PHP:

if (isset($_POST['sign'][1]))
    header("Location: a.php");
elseif(isset($_POST['sign'][2]) AND isset($_POST['sign'][3]))
    header("Location: b.php");
于 2013-01-15T18:00:26.490 に答える
0

私があなたで、このアイデアに従う以外に選択肢がなかった場合、jQuery でそのようなものを使用します (投稿変数がアクセスしたいページで処理されると仮定します)。

<form action="" method="post" id="myForm">
    <input value="1" type="checkbox" name="sign[]" />     
    <input value="2" type="checkbox" name="sign[]" />     
    <input value="3" type="checkbox" name="sign[]" />     
    <input value="4" type="checkbox" name="sign[]" />     
    <input value="5" type="checkbox" name="sign[]" />     
    <input type="submit" /> 
</form>


$("#myForm").submit(function() {
    var checked_array = new Array();
    $("#myForm input").each(function() {
        if ($(this).is(":checked")
            checked_array.push($(this).attr("value"));
    });

    if ( checked_array.indexOf(2) !== -1 && checked_array.indexOf(5) !== -1)
       ("#myForm").attr("action", "/url1.php") ;
    else if etc...
});
于 2013-01-15T18:07:17.463 に答える
0

これにはいくつかの方法があります。1 つは、javascript を使用してフォームの送信をインターセプトし、フォームの「アクション」の値を変更してから、送信を実行できることです。

2 つ目の方法は、このすべてのデータを 1 つのスクリプトに送信し、選択した値に基づいて目的のページへのリダイレクトを実行することです。

于 2013-01-15T18:00:38.507 に答える
0

から次のようになります。

<form action="" method="post">
<input value="1" type="checkbox" name="sign[]" />     
<input value="2" type="checkbox" name="sign[]" />     
<input value="3" type="checkbox" name="sign[]" />     
<input value="4" type="checkbox" name="sign[]" />     
<input value="5" type="checkbox" name="sign[]" />     
<input type="submit" /> 
</form>

そして、次のような投稿:

if(!empty($_POST['sign'])) {
    if(in_array(1, $_POST['sign'])) {
        // if just 1, go to page
    } elseif(in_array(1, $_POST['sign']) && in_array(4, $_POST['sign'])) {
        // if 1 and 4, go to page
    }
}
于 2013-01-15T18:01:04.193 に答える
0

各入力をビットと見なすことができます。したがって、常に 5 ビットを考慮する必要があります。

次に、可能な値のそれぞれに対応する 25 エントリの連想配列を定義します。

00001
00010
...

var links = {
    "00001" : "www.google.com",

];

次に、フォームを送信するときに、値に基づいてのtarget属性を設定するだけです。form

于 2013-01-15T18:01:45.047 に答える