9

私が次のフォームを持っていると仮定します:

<form action="process.php">
<input type="checkbox" name="option1" value="oats"> Oats
<input type="checkbox" name="option2" value="beans"> Beans
<input type="hidden" name="parameter" value="a"/>
<input type="submit" value="Submit"/>
</form>

通常は、URLをクリックした後、ブラウザは次の場所にリダイレクトします。

process.php?option1=oats&option2=beans&parameter=a

送信がクリックされたときにすべてのチェックボックスが「パラメータ」の一部として終了するが、コンマで区切られるようにするにはどうすればよいですか?つまり、次のようになります。

process.php?parameter=a,oats,beans

最小限のjavascript/jquery / htmlを使用した最良のソリューションは、htmlソリューションがない場合に最適です。

4

4 に答える 4

16

1つのパラメーターに複数の値が必要な場合は、次のように名前を付ける必要があります。parameter[]

fe:

<form action="process.php">
<input type="checkbox" name="parameter[]" value="oats"> Oats
<input type="checkbox" name="parameter[]" value="beans"> Beans
<input type="hidden" name="parameter[]" value="a"/>
<input type="submit" value="Submit"/>
</form>
于 2012-12-11T23:33:38.457 に答える
1

動的なデータのグループ化に使用する非常に便利な方法があります。

<form action="file.php" method="post">

<?php for ( $i = 0; $i < count( $something ); $++ ) { ?>
    <input type="checkbox" name="<?php $something[$i]; ?>[]" value="user_id"> Oats
    <input type="checkbox" name="<?php $something[$i]; ?>[]" value="user_name"> Beans
<?php } ?>
<input type="submit" value="Submit"/>
</form>
于 2017-03-09T13:31:02.193 に答える
0

多かれ少なかれここでのアイデア:最初の形式、1つの隠された入力は2番目の無効な形式のすべての価値をキャッチします

<script type="text/javascript">
function myfunc(){
    $('#void input').each(function(id,elem){
         b = $("#res").val();
         if(b.length > 0){
            $("#res").val( b + ',' + $(this).val() );
        } else {
            $("#res").val( $(this).val() );
        }

    });
        alert("VAL "+$("#res").val());
    $("#real").submit();

return false;
}

</script>

<form id="real" action="process.php">
<input id="res" type="hidden" name="parameter" value=""/>
</form>

<form id="void">
<input type="checkbox" name="option1" value="oats"> Oats
<input type="checkbox" name="option2" value="beans"> Beans
<input type="hidden" name="parameter" value="a"/>
<input type="submit" value="Submit" onClick="javascript:myfunc()"/>
</form>

修正を追加し、適切なフォームを送信してください。jsfiddleでテスト済み:

JsFiddelの「実用的な」例

単一フォームバージョンを追加

フィールドの名前を知っている必要があり、答えの他のパラメータを無視する必要があります

<script type="text/javascript">
function myfunc(){
    // can use more selector
    $('#real input').each(function(id,elem){
        // append the data to this field so no need to process it
        if(this.id == 'res'){
            return;                
        }
        // here I concat the values 
        b = $("#res").val();
        if(b.length > 0){
            $("#res").val( b + ',' + $(this).val() );
        } else {
            $("#res").val( $(this).val() );
        }

    });
    alert("VAL "+$("#res").val());  // remove me
    $("#real").submit();

    return false;
}

</script>

<form id='real' method='POST' action="#">
<input type="checkbox" name="option1" value="oats"> Oats
<input type="checkbox" name="option2" value="beans"> Beans
<input id="res" type="hidden" name="parameter" value="a"/>
<input type="submit" value="Submit" onClick="javascript:myfunc()"/>
</form>​
于 2012-12-12T00:02:58.233 に答える
0

私は実際にチェックされたチェックボックスにのみ興味があったので、次myfunc()のような他の例から構築しました。

function myfunc(){
    $('#void input[type="checkbox"]').each(function(id,elem){
        if ( ! $(this).is(':checked') ) return;
        b = $("#res").val();
        if(b.length > 0){
            $("#res").val( b + ',' + $(this).val() );
        } else {
            $("#res").val( $(this).val() );
        }
    });
    var stuff = $("#res").val();
    if ( stuff.length < 1 ) {
        alert('Please select at least one');
    } else {
        $("#real").submit();
    }
}
于 2017-09-21T02:01:51.630 に答える