我有一个包含复选框和价格的三个项目的表单。在下面的一个段落中,我有一个总价格的区域,以及所选项目的区域。如何在选中每个复选框时更新这两个区域?
<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实现这一目标?我真的不想使用文本框来放置值,我宁愿它们是内联文本。所以我想要第一位的对象名称,以及第二位的总价格。
答案 0 :(得分:3)
的jQuery
$(':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>
演示
答案 1 :(得分: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');
}
});
});
答案 2 :(得分:1)
使用纯JS(未经测试)
handleCheckbox = function(){
if(this.checked) {
document.getElementByTagName("span")[0].innerText = this.attributes["name"].value;
document.getElementByTagName("span")[1].innerText = this.value;
}
}
但是,应该有无线电而不是复选框。在复选框
上添加onClick="handleCheckbox"