1
    <form action="" method="get" name="combination" target="_self">
            <input type="checkbox" name="tag[]" value="pop" />pop<br /><br />
            <input type="checkbox" name="tag[]" value="rock" />rock<br /><br />
            <input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
            <input type="checkbox" name="tag[]" value="electronic" />electronic<br />
    <input name="" type="submit">
    </form>   

ユーザーがポップボックスとロックボックスをクリックした場合、フォームを送信するにはwww.mysite.com/?view=listen&tag[]=pop&tag[]=rockどうすればよいですか? ユーザーは、1 つ、2 つ、または 3 つのタグを選択できます。したがって、タグ配列の要素数は可変です。

4

4 に答える 4

2

プレーンな HTML を使用することはできません。action属性に指定できる URL は 1 つだけです。

ただし、JavaScript を使用することもできます (JS を有効にしないとフォームが役に立たなくなります)。checkedチェックボックスの状態を確認し、actionそれに応じて URL を交換するだけです。

于 2012-11-28T13:40:15.807 に答える
1

実際には、フォームでアクションを呼び出さないようにする必要があるため、送信をキャンセルする必要があります。戻り値falseがありませんでした。また、「location.href」が間違っていました。右は「parent.window.location.href」です。

今試し、働いた。

   <form action=""  method="get" name="combination" target="_self">
            <input type="checkbox" name="tag[]" value="pop" />pop<br /><br />
            <input type="checkbox" name="tag[]" value="rock" />rock<br /><br />
            <input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
            <input type="checkbox" name="tag[]" value="electronic" />electronic<br />
    <input name="" type="submit">
    </form>   


   <script>
    $("form").submit(function(){
       var url = "http://www.mysite.com/?view=listen&";

       var i = 0;
      $("input:checked").each(function(){
          url += "tag[" + i + "]=" + $(this).val() + "&";
          i++;
      });
      parent.window.location.href = url;
      return false;
    });
</script>
于 2012-11-28T13:52:57.923 に答える
1

ここでは正確な問題が発生していない可能性がありますが、次のようにフォームにいくつかの小さな変更を加えてみませんか。

<form action="http://www.mysite.com/">
    <input type="hidden" name="view" value="listen" />
    <input type="checkbox" name="tag[]" value="pop" />pop<br /><br />
    <input type="checkbox" name="tag[]" value="rock" />rock<br /><br />
    <input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
    <input type="checkbox" name="tag[]" value="electronic" />electronic<br />
    <button type="submit">submit</button>
</form>
于 2012-11-29T04:03:56.630 に答える
0

これがフォームアクションの目的です。ここでは、フォームの移動先を指定します。

jQueryを使用すると、特定のイベントのフォームアクションを編集できます。フォームに次のようなIDをmy_form指定し、チェックボックスに説明的なIDを指定します。

<form id="my_form" action="" method="get" name="combination" target="_self">
    <input id="pop_check" type="checkbox" name="tag[]" value="pop" />pop<br /><br />
    <input id="rock_check" type="checkbox" name="tag[]" value="rock" />rock<br /><br />
    <input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
    <input type="checkbox" name="tag[]" value="electronic" />electronic<br />
    <input name="" type="submit">
</form>

次に、フォームの下に次のjQueryコードを記述できます。

<script type="text/javascript">
    $("checkbox[name='tag']").on("click", function( //when any of the checkboxes is clicked the following code runs
        if($("#pop_check").is(":checked") || $("#rock_check").is(":checked")){ //if one of the two target check boxes is checked, the form action will be changed as desired
            $("#my_form").attr("action","www.mysite.com/?view=listen");
        }else if(!$("#pop_check").is(":checked") && !$("#rock_check").is(":checked")){ //since the user can also toggle off all checkboxes again, we need to check for that too and change the form action back to "" if required
            $("#my_form").attr("action","");
        }
    ));
</script>

あなたがjQueryを学んでいる(これから)なら、私はそれを強くお勧めします。ここにあなたが役立つと思うかもしれないいくつかの非常に良いチュートリアルがあります、それらは私がjQueryについて知っているほとんどすべてを私に教えてくれました:http ://thenewboston.org/list.php?cat = 32

編集

それを行う別の方法もあります。フォームの送信後に実行されるphpコードでは、2つのチェックボックスのいずれかが選択されているかどうかを確認し、それに応じてphpのヘッダー関数を使用してリダイレクトするかどうかを確認できます。

<?php
    //After form submission with form action="" (i.e. at the top of your php file)
    if(in_array("pop", $_GET['tag']) || in_array("rock", $_GET['tag'])){
        header('Location:www.mysite.com/?view=listen&tag=pop&tag=rock');
        exit;
    }
?>

実際、フォームの結果をブックマーク可能にする必要がないため、getではなくpostをフォームメソッドとして使用する必要があります。phpの組み込みheader()およびin_array()関数の詳細をご覧ください。

于 2012-11-28T13:53:44.487 に答える