2017-12-25 4 views
1

私は非常にスクリプト作成やプログラミングに慣れています。JavaScriptからフォームへの変数へのポスト

いくつかのオプションを選択するためのドロップダウンボックスがいくつかあるフォームがあります。私はドロップダウンボックスから選択されたオプションに基づいて合計価格を計算するjavascriptを書いています。合計値は正しく返されますが、この値をフォームに投稿するのは苦労しています。私は隠れた入力タイプを試しましたが、それはどちらも動作しません。ポストはphpファイルに行き、最終的にデータベースにその値を挿入する必要があります。

HTML

<form id="vmPrice" class="form-horizontal" method="post" 
action="create_xml.php"> 
<div class="control-group"> 
<label class="control-label" for="formattedTotalPrice">Costs:</label> 
<div class="controls"> 
<input type="hidden" name="postPrice" id="postPrice" value=""> 
&euro; <span id="formattedTotalPrice" name="formattedTotalPrice" >...</span> 
/month <br/> 
<span style="font-size: 10px;"> By clicking on Create VM a subscription with 
the above costs will be automaticly added to your account </span> 
</form> 

はJavaScript

function calculateTotal() 
{ 
    var unformattedTotalPrice = getVcpuPrice() + getOsPrice() + getHddPrice() + 
    getMemoryPrice() + getHAPrice(); 
    var formattedTotalPrice = unformattedTotalPrice; 

    document.getElementById('formattedTotalPrice').innerHTML = 
    formattedTotalPrice; 

    document.getElementById('postPrice').innerHTML = formattedTotalPrice; 
} 

formattedTotalPriceはスパンIDを使用して画面上に正しく表示されます。今私はフォームでこれを投稿したいですが、動作しません。

PHPコード(create_xml.php)

$price = (int)$_POST['formattedTotalPrice']; 
// or 
$price = (int)$_POST['postPrice']; 
print $price; 

この時点で印刷された値は0

+0

'span'はPHP側に投稿されません。それはちょうどそのように動作することはできません。 'input'を使用してください – Akintunde007

+0

しかし、はどうですか?それはどちらもうまくいかない。 – miepperd

+0

あなたもスパンを渡しているので、それは動作しません。 ' ...'間違っています。ちょうど入力を使用し、値を 'value'属性に渡します。 phpに送信しないようにユーザに表示するには 'span'を使います – Akintunde007

答えて

2

あなたはinnerHTML属性を設定しています。代わりにvalueを使用して、入力エレメントの値を変更してください。

document.getElementById('postPrice').value = formattedTotalPrice; 

innerHTMLは、ページのHTMLコンテンツを変更するために使用することができますが、それはフォームからPHPに送信されますHTML input要素のvalueです。

+0

これは素晴らしい答えです。今は10進数でも動作するかどうかを調べるだけです。どうもありがとうございます。 – miepperd

+0

@miepperdあなたの質問で尋ねられなかったので、私はその問題を修正しませんでした。あなたのPHPはすべてを 'int'にキャストします。小数点を受け入れる場合は、' float'に変更することができます。コード内の他の問題に関する一般的なヘルプを得るには、[StackExhange CodeReview](https://codereview.stackexchange.com/)を参照してください。 – andrewgu

関連する問題