2013-03-09 26 views
-2

我想能够捕获到名称= 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&nbsp;> 

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> 
+3

我清理了你的代码,但你的JS不完整。 – j08691 2013-03-09 16:13:01

+0

实际上,我认为默认行为是它将是文本“0”而不是数字0.如果您想要数字,则必须进行转换,但默认情况下会获得文本。我一定误解了你的问题。 – 2013-03-09 16:17:16

+0

我现在已经包括了它〜! – 2013-03-09 17:58:27

回答

0
<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> 
+0

感谢您的帮助。我现在已经包括了整个JS。 – 2013-03-09 20:17:10

+0

你可以帮助修改吗?谢谢 – 2013-03-09 20:33:26

+0

这是个好主意。谢谢!我只是担心所有选择都是以“formdesc”的形式记录下来的,作为购买内容的描述,还有清理copping cart。 – 2013-03-10 14:24:42

0

如果你需要采取的选项名称,然后val是不是你所需要的。相反,试试这个:

var optionName = $('#apparelType').find('option:selected').text(); 

希望我正确理解你(虽然很难)。

+0

它没有工作。 – 2013-03-09 17:12:39

-1

可以使用函数用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);

+0

那么,如果OP有数百个选择他的选择..? – Anujith 2013-03-09 16:34:41

+0

只是为了更好地解释:在下面的下拉列表中,我有一个字段“麻木”,用于输入数字(数量)来计算总量。下拉菜单就是选择价格点。我需要捕捉这些项目的描述。当我切换到文本时,脚本停止计算。 – 2013-03-09 17:22:18

+0

@ A.V注意'可以使用'。这个问题对代码的目的/范围不是很清楚。这可能是基于给定信息的简单解决方案。 – 2013-03-09 20:18:47