1

選択した合計を(チェックボックスを介して)合計するフォームに取り組んでいます。私の JavaScript ファイル build.js では、合計が合計されます。私の PHP ページでは、コードは前のフォーム/HTML ページで選択されたアイテムを受け取り、それらを PHP ページに表示されているものに渡します。フォーム ページで JavaScript を介して合計された合計を取り、選択されたすべてのオプションの下に合計として表示されるようにしたいと考えています。

PHP と JavaScript に関する私の知識は非常に初歩的なものです。これは、これらの言語のいずれかで作成した最初の実際のフォームです。私はこのサイトとインターネット全般に注ぎ込みましたが、機能することがわかったオプションを取得できませんでした. ここまでフォームを取得できたのは運が良かっただけだと思う​​ので、コードがきれいでない場合は申し訳ありません。

可能な限り具体的にお願いします。これが私のコードです:

合計を追加する JavaScript:

    $(document).ready(function() { 
        $("input[type=checkbox]:checked").attr("checked", false);
    function recalculate() {        
    var sum = 0;
    $("input[type=checkbox]:checked").each(function() {
        sum += parseInt($(this).attr("rel"));
    });
    $("#output").html(sum);
    }
    $("input[type=checkbox]").change(function() {
    recalculate();
    });
    });

合計を示すフォーム自体に書かれたコード:

<span id="output" class="total"></span><BR><BR>

PHP ページに書かれたコード:

<b>Estimate:</b>
<?php
  $aTruck = $_POST['formSelected'];
  if(empty($aTruck))
  {
    echo("You didn't select a truck.<BR><BR>");
  }
  else
  {
    $N = count($aTruck);
    echo("<h3>Truck Type: ");
  for($i=0; $i < $N; $i++)
    {
    echo($aTruck[$i] . " ");
    }}
  $aAddons = $_POST['formAddons'];
  if(empty($aAddons))
    { 
    echo("You didn't select any options."); 
    }
  else
  foreach ($aAddons as $v) 
    {
    echo "<h3> $v </h3>";
    }
?>

私が間違っていなければ、現在合計を渡すことができない理由は、ここで読んだことが原因です。PHP はサーバー上で実行され、JavaScript はユーザー側で実行されます。したがって、私のオプションは、合計をフォームで送信し(おそらく隠し変数として、どちらも把握できません)、Ajaxで渡します(使用しているサーバーがこれに対応しているかどうかはわかりません- おそらくそうで、すべて使用エラーです!)、または XMLHttpRequest を使用します。私はそれらのいずれかで見つけることができるものをすべて試しましたが、正しい変数が内部にリストされていないか、間違った場所に配置しているか、単に間違っています。

前述したように、これに関連するすべてのことをフォーラムに集めましたが、私が持っているわずかな理解に十分な具体的なものは何も見つかりませんでした. 私が試したことの中でも特に: javascript 変数値を入力型隠し値渡し、Javascript 変数を PHP POSTに渡し、XMLHttpRequest を使用し、Ajax を使用して、隠し変数として渡します (私は傾いているが、そうではありません)。私が正しく実装しているとは思わない)そしてさらに多くのこと-昨日仕事で一日中やったことがほとんどすべてなので、質問を冗長にしようとはしていません-どこが間違っているのかわかりません.

4

2 に答える 2

0

フォームに、次のような非表示の入力を追加する必要があります。

<input type="hidden"  name="sum"  value="">

次に、recalculate() (javasript) 関数で、すべてを計算したら、この入力の値を変更する必要があります。

function recalculate() {        
    var sum = 0;
    $("input[type=checkbox]:checked").each(function() {
        sum += parseInt($(this).attr("rel"));
    });
    $("#output").html(sum);

    // Change the hidden input value
    $("input[name='sum']").val(sum);
}

ここで、フォームが送信されたら、サーバー側 (PHP) の合計値に簡単にアクセスする必要があります。

$sum = $_POST['sum'];
于 2013-10-04T12:49:40.833 に答える
0

ここでヒットしたようです:

フォームで合計を送信します (おそらく隠し変数として)

あるページが別のページに投稿し、その別のページが結果を表示することについて話しているので、ここでは AJAX は必要ありません。他の値と同じようにフォーム値を使用できます。この場合の「隠し変数」は、実際にはinput要素です。

<input type="hidden" name="sum" />

最初のページに合計を表示している JavaScript では:

$("#output").html(sum);

その合計をフォーム要素の値に設定することもできます:

$("#output").html(sum);
$("input[name=sum]").val(sum);

それが他の要素 (や など)inputと同じ内部にある限り、最初のページが 2 番目のページにポストされると、2 番目のページのコードは同じ方法で合計値​​にアクセスできます。forminputformSelectedformAddons

$_POST["sum"]
于 2013-10-04T12:46:48.697 に答える