Javascript/Jquery - 计算值并显示在 div 内
Javascript/Jquery - Calculate values and show inside a div
我必须写下一个方案来向您展示我正在努力开发的东西。如下图所示,有一个收音机和一个 select 区域。根据用户在这两个方面的选择,函数中需要考虑不同的值。红色值与下拉列表相关。如果您在下拉列表中选择 op1 和 "a",则 "a" 将为 2160。如果您在下拉列表中选择 op3 和 "c",则 "c" 将为 3888,依此类推。总数将显示在#total div 中,与无线电和下拉列表中的选择相关的值将显示在其他两个 divs #subRadio 和 #subDrop 中(已显示的值添加到无线电值)。
当我试图解决它时,我得到了一大堆实际上根本不起作用的假设,所以我请求你们帮助解决这个问题。
以防万一有人问,我会把我开始写的代码放在这里:
<form class="form-horizontal text-left" id="meishi">
<div class="form-group">
<div class="col-lg-2 topic">
<label>Design</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="10800">op1
</label>
</div>
<div class="col-lg-4">
<label class="radio-inline">
<input type="radio" name="design" value="14040">op2
</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="16200">op3
</label>
</div>
</div>
<div class="form-group">
<label class="col-lg-2" for="qtt">Quantity</label>
<select id="qtt" class="col-lg-3" name="qtt">
<option value="">Choose one</option>
<option value="a">100</option>
<option value="b">200</option>
<option value="c">300</option>
</select>
</div>
</form>
$(document).ready(function(){
$("#msQtt").change(function(){
var design = $('input[name=design]:checked').val();
var qtt = $("#qtt option:selected").val();
if(design == "10800" && qtt == "a"){
$('#subRadio').text('$ 10800')
$('#subDrop').text('$ 2160')
$('#total').text('$ 12960')
}
else if(design == "10800" && qtt == "b"){
$('#subRadio').text('$ 10800')
$('#subDrop').text('$ 2484')
$('#total').text('$ 13284')
}
});
});
非常感谢!
创建一个用于存储数据的对象:
var data = {
'opt10800' : {
'a' : 2160 ,
'b' : 2484 ,
'c' : 2808
},
'opt14040' : {
'a' : 2808 ,
'b' : 3132 ,
'c' : 3456
},
'opt16200': {
'a' : 3240 ,
'b' : 3564 ,
'c' : 3888
}
};
然后,当下拉菜单或单选按钮发生变化时,从对象中获取值并将它们放入 span 中:
$(function() {
$('[name=design],[name=qtt]').on('change', function() {
var r = $('[name=design]:checked').val() ,
d = $('[name=qtt] option:selected').val();
if( r != '' && d != '') {
var s = data['opt'+r][d] ,
t = parseInt( r ) + parseInt( s );
$('#subRadio').text( r + ' + ' );
$('#subDrop').text( s + ' = ' );
$('#total').text( t );
}
});
});
完整演示:
var data = {
'opt10800' : {
'a' : 2160 ,
'b' : 2484 ,
'c' : 2808
},
'opt14040' : {
'a' : 2808 ,
'b' : 3132 ,
'c' : 3456
},
'opt16200': {
'a' : 3240 ,
'b' : 3564 ,
'c' : 3888
}
};
$(function() {
$('[name=design],[name=qtt]').on('change', function() {
var r = $('[name=design]:checked').val() ,
d = $('[name=qtt] option:selected').val();
if( r != '' && d != '') {
var s = data['opt'+r][d] ,
t = parseInt( r ) + parseInt( s );
$('#subRadio').text( r + ' + ' );
$('#subDrop').text( s + ' = ' );
$('#total').text( t );
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="form-horizontal text-left" id="meishi">
<div class="form-group">
<div class="col-lg-2 topic">
<label>Design</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="10800">op1
</label>
</div>
<div class="col-lg-4">
<label class="radio-inline">
<input type="radio" name="design" value="14040">op2
</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="16200">op3
</label>
</div>
</div>
<div class="form-group">
<label class="col-lg-2" for="qtt">Quantity</label>
<select id="qtt" class="col-lg-3" name="qtt">
<option value="">Choose one</option>
<option value="a">100</option>
<option value="b">200</option>
<option value="c">300</option>
</select>
</div>
</form>
<span id="subRadio"></span>
<span id="subDrop"></span>
<span id="total"></span>
尝试工作FIDDLE
已更新javascript
$(document).ready(function() {
function UpdatePrice() {
var CalMatrix = [{
val1: 10800,
val2: 'a',
resultant: 2160
}, {
val1: 10800,
val2: 'b',
resultant: 2484
}, {
val1: 10800,
val2: 'c',
resultant: 2808
},
{
val1: 14040,
val2: 'a',
resultant: 2808
}, {
val1: 14040,
val2: 'b',
resultant: 3132
}, {
val1: 14040,
val2: 'c',
resultant: 3456
},
{
val1: 16200,
val2: 'a',
resultant: 3240
}, {
val1: 16200,
val2: 'b',
resultant: 3564
}, {
val1: 16200,
val2: 'c',
resultant: 3888
}
];
var design = $('input[name=design]:checked').val();
var qtt = $("#qtt option:selected").val();
var result = $.grep(CalMatrix, function(n) {
return Number(n.val1) == Number(design) && n.val2 == qtt;
});
$('#subRadio').html('$ ' + String(result[0].val1))
$('#subDrop').html('$ ' + String(result[0].resultant))
$('#total').html('$ ' + parseInt(result[0].val1 + result[0].resultant, 10));
}
$('#qtt').on('change', function(e) {
UpdatePrice(); // to calculate the price on change event
});
UpdatePrice(); // to calculate the price on page load
});
编辑
已更新 FIDDLE、
也在无线电更改事件上附加了一个新的处理程序
$('#qtt, input[type=radio][name=design]').on('change', function(e) {
UpdatePrice(); // to calculate the price on change event
});
希望对你有用。
希望这就是您要找的 DEMO
<form class="form-horizontal text-left" id="meishi">
<div class="form-group">
<div class="col-lg-2 topic">
<label>Design</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" data-drop-a="2160" data-drop-b="2484" data-drop-c="2808" name="design" value="10800">op1
</label>
</div>
<div class="col-lg-4">
<label class="radio-inline">
<input type="radio" data-drop-a="2808" data-drop-b="3132" data-drop-c="3456" name="design" value="14040">op2
</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" data-drop-a="3240" data-drop-b="3564" data-drop-c="3888" name="design" value="16200">op3
</label>
</div>
</div>
<div class="form-group">
<label class="col-lg-2" for="qtt">Quantity</label>
<select id="qtt" class="col-lg-3" name="qtt">
<option value="">Choose one</option>
<option value="a">100</option>
<option value="b">200</option>
<option value="c">300</option>
</select>
</div>
</form>
_
<script type="text/javascript">
$(document).ready(function(){
$("input[name=design], #qtt").on('change',function(){
var design = $('input[name=design]:checked');
var designVal = parseInt(design.val());
var qtt = $("#qtt").val();
var subDrop=parseInt(design.data('drop-'+qtt));
if (!subDrop) subDrop=0;
if (!designVal) designVal=0;
$('#subRadio').text(designVal)
$('#subDrop').text(subDrop)
$('#total').text(designVal+subDrop)
});
});
</script>
我必须写下一个方案来向您展示我正在努力开发的东西。如下图所示,有一个收音机和一个 select 区域。根据用户在这两个方面的选择,函数中需要考虑不同的值。红色值与下拉列表相关。如果您在下拉列表中选择 op1 和 "a",则 "a" 将为 2160。如果您在下拉列表中选择 op3 和 "c",则 "c" 将为 3888,依此类推。总数将显示在#total div 中,与无线电和下拉列表中的选择相关的值将显示在其他两个 divs #subRadio 和 #subDrop 中(已显示的值添加到无线电值)。
当我试图解决它时,我得到了一大堆实际上根本不起作用的假设,所以我请求你们帮助解决这个问题。
以防万一有人问,我会把我开始写的代码放在这里:
<form class="form-horizontal text-left" id="meishi">
<div class="form-group">
<div class="col-lg-2 topic">
<label>Design</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="10800">op1
</label>
</div>
<div class="col-lg-4">
<label class="radio-inline">
<input type="radio" name="design" value="14040">op2
</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="16200">op3
</label>
</div>
</div>
<div class="form-group">
<label class="col-lg-2" for="qtt">Quantity</label>
<select id="qtt" class="col-lg-3" name="qtt">
<option value="">Choose one</option>
<option value="a">100</option>
<option value="b">200</option>
<option value="c">300</option>
</select>
</div>
</form>
$(document).ready(function(){
$("#msQtt").change(function(){
var design = $('input[name=design]:checked').val();
var qtt = $("#qtt option:selected").val();
if(design == "10800" && qtt == "a"){
$('#subRadio').text('$ 10800')
$('#subDrop').text('$ 2160')
$('#total').text('$ 12960')
}
else if(design == "10800" && qtt == "b"){
$('#subRadio').text('$ 10800')
$('#subDrop').text('$ 2484')
$('#total').text('$ 13284')
}
});
});
非常感谢!
创建一个用于存储数据的对象:
var data = {
'opt10800' : {
'a' : 2160 ,
'b' : 2484 ,
'c' : 2808
},
'opt14040' : {
'a' : 2808 ,
'b' : 3132 ,
'c' : 3456
},
'opt16200': {
'a' : 3240 ,
'b' : 3564 ,
'c' : 3888
}
};
然后,当下拉菜单或单选按钮发生变化时,从对象中获取值并将它们放入 span 中:
$(function() {
$('[name=design],[name=qtt]').on('change', function() {
var r = $('[name=design]:checked').val() ,
d = $('[name=qtt] option:selected').val();
if( r != '' && d != '') {
var s = data['opt'+r][d] ,
t = parseInt( r ) + parseInt( s );
$('#subRadio').text( r + ' + ' );
$('#subDrop').text( s + ' = ' );
$('#total').text( t );
}
});
});
完整演示:
var data = {
'opt10800' : {
'a' : 2160 ,
'b' : 2484 ,
'c' : 2808
},
'opt14040' : {
'a' : 2808 ,
'b' : 3132 ,
'c' : 3456
},
'opt16200': {
'a' : 3240 ,
'b' : 3564 ,
'c' : 3888
}
};
$(function() {
$('[name=design],[name=qtt]').on('change', function() {
var r = $('[name=design]:checked').val() ,
d = $('[name=qtt] option:selected').val();
if( r != '' && d != '') {
var s = data['opt'+r][d] ,
t = parseInt( r ) + parseInt( s );
$('#subRadio').text( r + ' + ' );
$('#subDrop').text( s + ' = ' );
$('#total').text( t );
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="form-horizontal text-left" id="meishi">
<div class="form-group">
<div class="col-lg-2 topic">
<label>Design</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="10800">op1
</label>
</div>
<div class="col-lg-4">
<label class="radio-inline">
<input type="radio" name="design" value="14040">op2
</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" name="design" value="16200">op3
</label>
</div>
</div>
<div class="form-group">
<label class="col-lg-2" for="qtt">Quantity</label>
<select id="qtt" class="col-lg-3" name="qtt">
<option value="">Choose one</option>
<option value="a">100</option>
<option value="b">200</option>
<option value="c">300</option>
</select>
</div>
</form>
<span id="subRadio"></span>
<span id="subDrop"></span>
<span id="total"></span>
尝试工作FIDDLE
已更新javascript
$(document).ready(function() {
function UpdatePrice() {
var CalMatrix = [{
val1: 10800,
val2: 'a',
resultant: 2160
}, {
val1: 10800,
val2: 'b',
resultant: 2484
}, {
val1: 10800,
val2: 'c',
resultant: 2808
},
{
val1: 14040,
val2: 'a',
resultant: 2808
}, {
val1: 14040,
val2: 'b',
resultant: 3132
}, {
val1: 14040,
val2: 'c',
resultant: 3456
},
{
val1: 16200,
val2: 'a',
resultant: 3240
}, {
val1: 16200,
val2: 'b',
resultant: 3564
}, {
val1: 16200,
val2: 'c',
resultant: 3888
}
];
var design = $('input[name=design]:checked').val();
var qtt = $("#qtt option:selected").val();
var result = $.grep(CalMatrix, function(n) {
return Number(n.val1) == Number(design) && n.val2 == qtt;
});
$('#subRadio').html('$ ' + String(result[0].val1))
$('#subDrop').html('$ ' + String(result[0].resultant))
$('#total').html('$ ' + parseInt(result[0].val1 + result[0].resultant, 10));
}
$('#qtt').on('change', function(e) {
UpdatePrice(); // to calculate the price on change event
});
UpdatePrice(); // to calculate the price on page load
});
编辑
已更新 FIDDLE、
也在无线电更改事件上附加了一个新的处理程序
$('#qtt, input[type=radio][name=design]').on('change', function(e) {
UpdatePrice(); // to calculate the price on change event
});
希望对你有用。
希望这就是您要找的 DEMO
<form class="form-horizontal text-left" id="meishi">
<div class="form-group">
<div class="col-lg-2 topic">
<label>Design</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" data-drop-a="2160" data-drop-b="2484" data-drop-c="2808" name="design" value="10800">op1
</label>
</div>
<div class="col-lg-4">
<label class="radio-inline">
<input type="radio" data-drop-a="2808" data-drop-b="3132" data-drop-c="3456" name="design" value="14040">op2
</label>
</div>
<div class="col-lg-3">
<label class="radio-inline">
<input type="radio" data-drop-a="3240" data-drop-b="3564" data-drop-c="3888" name="design" value="16200">op3
</label>
</div>
</div>
<div class="form-group">
<label class="col-lg-2" for="qtt">Quantity</label>
<select id="qtt" class="col-lg-3" name="qtt">
<option value="">Choose one</option>
<option value="a">100</option>
<option value="b">200</option>
<option value="c">300</option>
</select>
</div>
</form>
_
<script type="text/javascript">
$(document).ready(function(){
$("input[name=design], #qtt").on('change',function(){
var design = $('input[name=design]:checked');
var designVal = parseInt(design.val());
var qtt = $("#qtt").val();
var subDrop=parseInt(design.data('drop-'+qtt));
if (!subDrop) subDrop=0;
if (!designVal) designVal=0;
$('#subRadio').text(designVal)
$('#subDrop').text(subDrop)
$('#total').text(designVal+subDrop)
});
});
</script>