不能使用选项值中的文本与键控功能
我想能够捕获到名称= formdesc
选项值是文本而不是数字,但我需要数字来计算下面的价格点。有没有办法改变它,这样它就可以正确计算(在JS之下),并将选项值作为文本而不是数字(HTML)来捕获?不能使用选项值中的文本与键控功能
样的我需要什么:
<select id="apparelType" name="formdesc">
<option selected="selected" value="na">Select</option>
<option value="tshirt">T-Shirt</option>
但Breakes我的JS!
HTML:(我现在)
<select id="apparelType" name="formdesc">
<option selected="selected" value="na">Select</option>
<option value="0">T-Shirt</option>
<option value="1">Shorts</option>
<option value="2">Hat</option>
<option value="3">Bag</option>
</select>
<input id="numb" type="number" name="formterm">
<id="tot"><Total: $0.00 >
JS:
<script type="text/javascript">// <![CDATA[
//
$(document).ready(function(){
$('#numb').keyup(function(){
var appVal = new Array();
appVal[0] = 15; <--[tshirt]
appVal[1] = 20;
appVal[2] = 25;
appVal[3] = 30;
var cost = 0;
var fmapVal = $('#apparelType').val();
if (fmapVal == 'na')
{ alert ('Please select an apparel type.');
}
else
{
cost = appVal[fmapVal];
};
//alert(cost);
var getNumb = $('#numb').val();
var baseTotal = cost * getNumb;
var getTax = baseTotal * .06;
var getTotal = baseTotal + getTax;
$('#tot').html('Total: $' + getTotal.toFixed(2));
$('#formbal').val(getTotal.toFixed(2));
});
});
// ]]></script>
<form>
<select id="apparelType" name="apparelType">
<option selected="selected" value="na">Select</option>
<option value="0">T-Shirt</option>
<option value="1">Shorts</option>
<option value="2">Hat</option>
<option value="3">Bag</option>
</select>
<label for="numb">Total: <span>$</span></label>
<input id="numb" type="number" name="formterm" value="0.00" >
<input id="pretaxTotal" type="hidden" value="0.00" >
<br>
<textarea id="formdesc" name="formdesc" rows="12" cols="20"></textarea>
</form>
<script type="text/javascript">
$('#apparelType').change(function(){
var apparelType = $('#apparelType');
var fmapVal = apparelType.val();
if (fmapVal == 'na') {
alert('Please select an apparel type.');
} else {
var appVal = [ 15, 20, 25, 30 ];
var description = apparelType.find('option:selected').text();
var cost = appVal[fmapVal];
var pretaxTotal = parseInt($('#pretaxTotal').val());
var subtotal = pretaxTotal + cost;
var updatedTotal = (subtotal * 1.06).toFixed(2);
$('#pretaxTotal').val(subtotal);
$('#numb').val(updatedTotal);
$('#formdesc').append(description + '\n');
}
});
/* The following code is cosmetic. Makes dollar sign appear to be inside the input field */
$('label > span').css('position','relative').css('left','20px').css('font-size','80%');
$('input[type=number]').css('padding-left','15px');
</script>
感谢您的帮助。我现在已经包括了整个JS。 – 2013-03-09 20:17:10
你可以帮助修改吗?谢谢 – 2013-03-09 20:33:26
这是个好主意。谢谢!我只是担心所有选择都是以“formdesc”的形式记录下来的,作为购买内容的描述,还有清理copping cart。 – 2013-03-10 14:24:42
如果你需要采取的选项名称,然后val
是不是你所需要的。相反,试试这个:
var optionName = $('#apparelType').find('option:selected').text();
希望我正确理解你(虽然很难)。
它没有工作。 – 2013-03-09 17:12:39
可以使用函数用case语句来从传递文本字符串获取成本:
function getVal(value) {
switch(value) {
case 'tshirt':
cost = 15;
break;
case 'shorts':
cost = 15;
break;
case 'hat':
cost = 15;
break;
case 'bag':
cost = 15;
break;
default:
cost = 'Please select an option...';
break;
}
return cost;
}
然后在你的if
语句中使用cost = getVal(fmapVal);
。
那么,如果OP有数百个选择他的选择..? – Anujith 2013-03-09 16:34:41
只是为了更好地解释:在下面的下拉列表中,我有一个字段“麻木”,用于输入数字(数量)来计算总量。下拉菜单就是选择价格点。我需要捕捉这些项目的描述。当我切换到文本时,脚本停止计算。 – 2013-03-09 17:22:18
@ A.V注意'可以使用'。这个问题对代码的目的/范围不是很清楚。这可能是基于给定信息的简单解决方案。 – 2013-03-09 20:18:47
我清理了你的代码,但你的JS不完整。 – j08691 2013-03-09 16:13:01
实际上,我认为默认行为是它将是文本“0”而不是数字0.如果您想要数字,则必须进行转换,但默认情况下会获得文本。我一定误解了你的问题。 – 2013-03-09 16:17:16
我现在已经包括了它〜! – 2013-03-09 17:58:27