0

だから私は次のようなラジオボタングループを持っています:

<div data-role="fieldcontain">
    <fieldset data-role="controlgroup">
        <legend>Choose a pet:</legend>
            <input type="radio" name="radio-choice-1" id="radio-choice-1" value="choice-1" checked="checked" />
            <label for="radio-choice-1">Cat</label>

            <input type="radio" name="radio-choice-1" id="radio-choice-2" value="choice-2"  />
            <label for="radio-choice-2">Dog</label>

            <input type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3"  />
            <label for="radio-choice-3">Hamster</label>

            <input type="radio" name="radio-choice-1" id="radio-choice-4" value="choice-4"  />
            <label for="radio-choice-4">Lizard</label>
    </fieldset>
</div>

今、私がforを送信するだけで、この$ _POSTを取得します(複数のラジオグループの質問があることに注意してください)

Array
(
    [radio-choice-1] => choice-1
    [radio-choice-2] => choice-4
    [radio-choice-3] => choice-2
    [submit] => submit
    [PHPSESSID] => 11111111111111111
)

送信する前にHTMLまたは$_POSTデータを再構築して、次のようにするにはどうすればよいですか。

Array
(
    [type-1] => radio-choice-1
    [answer-1] => choice-1
    [type-2] => radio-choice-2
    [answer-2] => choice-4
    [type-3] => radio-choice-3
    [answer-3] => choice-2
    [submit] => submit
    [PHPSESSID] => 11111111111111111
)

たぶんjQueryをオプションとして?

4

3 に答える 3

3

送信後に行うことができます。元の命名規則を保持している場合、以下のコードは機能するはずです。

$postValues = $_POST;
$altered = Array();
$unaltered = Array();

foreach ($postValues as $key => $val) {

  if ( FALSE !== stripos($key, 'radio-choice-') ) {

    $num = explode('-', $key);
    $num = $num[2];
    $altered['type-'.$num] = $key;
    $altered['answer-'.$num] = $value;

  } else {

    $unAltered[$key] = $value;

  }  

}

$manipulatedPOSTData = array_merge($altered, $unAltered);

// Keep doing what you intended
于 2011-04-01T20:38:18.193 に答える
1

あなたが提出しているフォームについて話していると思いますか?

投稿される内容をより細かく制御したい場合は、次の 2 つのいずれかを行うことができます。

1) 隠し変数を追加する

また

2) 通常のフォーム送信の代わりに jQuery .post() (http://api.jquery.com/jQuery.post/) を使用します。

個人的には、2つのうち最初のものが最も簡単だと思います。

<div data-role="fieldcontain">
    <input type="hidden" name="type-1" value="radio-choice-1" />
    <fieldset data-role="controlgroup">
        <legend>Choose a pet:</legend>
            <input type="radio" name="answer-1" id="radio-choice-1" value="choice-1" checked="checked" />
            <label for="radio-choice-1">Cat</label>

            <input type="radio" name="answer-1" id="radio-choice-2" value="choice-2"  />
            <label for="radio-choice-2">Dog</label>

            <input type="radio" name="answer-1" id="radio-choice-3" value="choice-3"  />
            <label for="radio-choice-3">Hamster</label>

            <input type="radio" name="answer-1" id="radio-choice-4" value="choice-4"  />
            <label for="radio-choice-4">Lizard</label>
    </fieldset>
</div>

無線グラウンドの名前を answer-1 に変更し、隠し変数を追加することで、要件を満たす必要があります (他の無線要素についても同じことを行います)。

于 2011-04-01T20:39:02.927 に答える
0

可能であれば、クライアント側の詳細は避けてください。

それ以外の場合は、 .submit()を使用して、必要なものをハンド コードします。しかし、それは難しいです。

于 2011-04-01T20:39:44.917 に答える