2011-01-13 18 views
1

私はチェックボックスと価格で3つの項目を持つフォームを持っています。下の段落には、総価格の領域と選択された項目の領域があります。各チェックボックスをオンにすると、これら2つのエリアをどのように更新できますか?チェックボックスをクリックしたときにテキストを変更するにはどうすればよいですか?

<form> 
<input type="checkbox" name="milk" id="checkbox" value="10.00"/>£10.00<br/> 
<input type="checkbox" name="eggs" id="checkbox2" value="20.00"/>£20.00<br/> 
<input type="checkbox" name="cheese" id="checkbox3" value="30.00"/>£30.00<br/> 
If you buy <span>name of items here</span>, it will cost you a total of £<span>price here</span>. 
<input type="submit"/> 
</form> 

どうすればjQueryやJavaScriptでこれを達成できますか?私は本当に値を入れるためにテキストボックスを使用したくない、むしろインラインテキストだっただろう。だから、最初のビットにオブジェクト名を、2番目のビットにトータルプライスを入れたい。

+0

あなたが誰かが偽造の場合には、あまりにもサーバー上のコストを再計算したいと思います低い値のPOST。負の値を指定すると、アプリケーションは注文によりお金を払うことになりました。 – StuperUser

+0

ええ、私はあなたのポイントを参照してください。この価格は単なるラベルですが、実際の製品の価格はサーバー側で計算されます。しかし、ありがとう。 – edwardmlyte

答えて

3

のjQueryにあるチェックボックスをonClick="handleCheckbox"を追加

$(':checkbox').change(function() { 
    var sum = 0; 
    var names = $('form :checked').map(function(){ 
     sum += (this.value - 0); 
     return this.name; 
    }).get().join(','); 

    var spans = $('form span'); 
    spans[0].innerHTML = names; 
    spans[1].innerHTML = sum; 
}); 

HTML

<form> 
    <input type="checkbox" name="milk" id="checkbox" value="10.00"/>£10.00<br/> 
    <input type="checkbox" name="eggs" id="checkbox2" value="20.00"/>£20.00<br/> 
    <input type="checkbox" name="cheese" id="checkbox3" value="30.00"/>£30.00<br/> 
    If you buy <span>name of items here</span>, it will cost you a total of £<span>price here</span>. 
    <input type="submit"/> 
</form> 

デモ

simple demo

+0

パーフェクト。ありがとう、 – edwardmlyte

2

私はあなたの要件を満たすためにjqueryを使用しました。

これを試してみてください -

<form> 
<input type="checkbox" name="milk" id="checkbox" value="10.00"/>£10.00<br/> 
<input type="checkbox" name="eggs" id="checkbox2" value="20.00"/>£20.00<br/> 
<input type="checkbox" name="cheese" id="checkbox3" value="30.00"/>£30.00<br/> 
If you buy <span id="name">name of items here</span>, it will cost you a total of £<span id="price">price here</span>. 
<input type="submit"/> 
</form> 


$(document).ready(function(){ 

$('input[type="chechbox"]').click(function()[ 

    if($(this).is(':checked')){ 

    $('#price').html($(this).val()); 
    $('#name').html($(this).attr('name')); 

    }else{ 

    $('#price').html('Price'); 
    $('#name').html('name'); 
    } 

}); 

}); 
+0

.val()はスパンで使用できますか?または、.html()が必要ですか? – StuperUser

+0

@StuperUser:ありがとう、それは私のコードを更新しないでください。 – Alpesh

+0

申し訳ありませんが、私は十分具体的ではありませんでした。私は一度項目を選択したくない。私は合計価格を合計できるようにしたい。そして、私が望むように3つの項目を追加して削除します。 – edwardmlyte

1

をしかし、純粋なJS(未テスト)

handleCheckbox = function(){ 
     if(this.checked) { 
     document.getElementByTagName("span")[0].innerText = this.attributes["name"].value; 
     document.getElementByTagName("span")[1].innerText = this.value; 
     } 
    } 

を使用して、ラジオの代わりにチェックボックスがあるはずです。

+0

+1ラジオボタン。 – StuperUser

+0

Nah複数のアイテムを選択して合計の合計価格だけでなく、すべての名前をリスト形式で表示できるように、チェックボックスを使用したいと考えています。 – edwardmlyte

関連する問題