Javascript数学表单字段

Javascript数学表单字段,javascript,forms,math,input-field,Javascript,Forms,Math,Input Field,我正在用一些javascript数学函数构建一个表单,但似乎无法让第三个字段按我所希望的那样工作 当您在蓝色价格框字段中输入100时,“您希望为销售此瓶子支付多少费用” 然后25被放入下一个正确的字段 但是销售价格(包括税)字段不起作用,它应该是100,然后加上下一个字段,所以在本例中是125,然后乘以1.125。答案是140.63美元 表单字段 <label for="CAT_Custom_15"><b>How much would you like to be

我正在用一些javascript数学函数构建一个表单,但似乎无法让第三个字段按我所希望的那样工作

  • 当您在蓝色价格框字段中输入100时,“您希望为销售此瓶子支付多少费用”
  • 然后25被放入下一个正确的字段
  • 但是销售价格(包括税)字段不起作用,它应该是100,然后加上下一个字段,所以在本例中是125,然后乘以1.125。答案是140.63美元


表单字段

<label for="CAT_Custom_15"><b>How much would you like to be paid for selling this bottle?</b></label>
<input type="text" maxlength="4000" onchange="output()" name="CAT_Custom_15" id="CAT_Custom_15" class="cat_textbox price bborder" />

<label for="CAT_Custom_14">Cloudwine Commission 25%</label>
<input type="text" maxlength="4000" name="CAT_Custom_14" id="CAT_Custom_14" class="cat_textbox price" readonly="readonly" />

<label for="CAT_Custom_13">SELL PRICE INCLUDING TAX</label>
<input type="text" maxlength="4000" name="CAT_Custom_13" id="CAT_Custom_13" class="cat_textbox price" readonly="readonly" />
你把
.toFixed(2)
搞砸了你的
toFixed()
jQuery
元素上,而不是在数值上

另外,
toFixed()
返回一个字符串,我使用
+
操作符将其转换为一个数字

我将计算结果存储在变量中,而不是再次从您的页面获取它们。这通过减少jQuery调用来提高性能

将JS更改为:

函数输出(){
var startPriceV2=+jQuery(“#CAT_Custom_15”).val();
var税=+(startPriceV2*(0.25)).toFixed(2);
var cloudCom=+((startPriceV2+税收)*1.125)。toFixed(2);
jQuery('#CAT_Custom_14').val(tax);
jQuery('#CAT_Custom_13').val(cloudCom);
}
标签{
显示:块;
}

你想卖这瓶酒得到多少钱?
云葡萄酒佣金25%
含税售价

到目前为止,数字四舍五入对于您的计算机来说只是外围设备(而且毫无意义)。您的案例是正确的体系结构和良好实践之一,例如,不使用输入字段作为计算字段,也不从html代码内部附加事件处理程序:使用jQuery也非常适合附加处理程序

我还发现“onchange”事件处理程序不会产生预期的结果,因此我将其更改为“onblur”。我无法解释为什么,但我将不深入探讨它,因为从html中附加处理程序肯定是不推荐的

至于开发和实践模式,请尝试以下“无声”片段:


提供头衔
#委托{
宽度:60px;
高度:20px;
边框:1px纯蓝色;
}
#最终价格{
宽度:60px;
高度:20px;
颜色:白色;
背景颜色:蓝色;
}
多少钱?

Cloudwine通讯: 价格: 函数输出() { 让priceValue=Number($('#price').val()), 结果交付=数量(价格值*.25), 首次添加=价格值+结果交付, 结果最终=首次添加+首次添加*.125; $('#commission').html(resultCommission); $('finalPrice').html(resultFinal); }
第二次计算中还有一个额外的错误。Op希望对价格加佣金征税,因此
parseInt(startPriceV2)+parseInt(cloudCom)*(1.125)
应该是
(parseInt(startPriceV2)+parseInt(cloudCom))*(1.125)
。这样的结果是$140.63,如所需。maxlength=“4000”是什么意思?这是字段默认值。很早,是的。但是您不想使用4000个字符来编写计算值,是吗?我觉得这种属性会给你的代码增加“噪音”,建议你放弃它。请看我的正确答案。希望你会发现它有用…谢谢,但它并没有把佣金加在包括税在内的项目上field@Jake-非常正确。请参考我自己的答案。
function output(){

    var startPriceV2 = jQuery( "#CAT_Custom_15" ).val();

    jQuery( '#CAT_Custom_14' ).val( parseInt(startPriceV2) * (0.25) ).toFixed(2);

    var cloudCom = jQuery( '#CAT_Custom_14' ).val();            

    jQuery( '#CAT_Custom_13' ).val( parseInt(startPriceV2) + parseInt(cloudCom) * (1.125) ).toFixed(2);

}
function output(){

  var startPriceV2 = jQuery( "#CAT_Custom_15" ).val();

    jQuery( '#CAT_Custom_14' ).val( (parseInt(startPriceV2) * (0.25)).toFixed(2) );

    var cloudCom = jQuery( '#CAT_Custom_14' ).val();            

    jQuery( '#CAT_Custom_13' ).val( (parseInt(startPriceV2) + parseInt(cloudCom) * (1.125)).toFixed(2) );

}