【发布时间】:2014-08-19 03:24:55
【问题描述】:
我使用 html 制作了一个表单。
一开始我觉得很简单。我的输入是用户输入的金额。然后我制作了 javascript 代码来根据用户输入的金额计算动态价格。代码如下:
<input class="typeahead" type="text" placeholder="Amount" name="Gift-Card Amount"/>
javascript:
jQuery("input[name='Gift-Card Amount']").change(function () {
if (isNaN(parseFloat(this.value)) || !isFinite(this.value)) {
jQuery(this).val('');
return false;
}
var calc = parseFloat(this.value) * 0.95;
jQuery(this).parents("form").find("input[name='price']").val(calc);
});
计算为常数 0.95。所以我添加了一个新的输入。店铺名称。因此用户可以输入商店名称。金额:
<input class="stores typeahead" type="text" placeholder="Stores" name="name"/>
而且我希望根据商店名称和数量更改价格。所以我创建了这个对象:
var stores = {
"McDonalds" : .90,
"Target" : .92,
}
var storeName = jQuery(this).parents("form").find("input[name='name']").val();
console.log(stores[storeName]);
因此,可以根据输入的商店名称将该值替换为预设值,而不是常数 0.95。我不知道如何让这两个一起工作。意思是,我如何重新编码第一个 javascript 以重新定义 var 存储值而不是 0.95?
【问题讨论】:
-
将商店查找放入
change函数。完成。 -
jQuery(this).val('')只是this.value = ''的一种低效方式。不需要 parseFloat,this.value * 0.95会返回一个数字。jQuery(this).parents("form").find("input[name='price']").val(calc)可以是this.form.price.value = calc,这样效率更高。 jQuery 并不总是更少的代码。 -
他不需要在
this.value上使用parseFloat(),因为this.value是字符串,而不是数字? @RobG -
感谢您的反馈,但这不是我的问题。我需要知道如何让更改函数识别 var 存储值而不是 .95
-
@user3784824——这就是为什么它是一个评论。 :-) @NobleMushtak–不,乘法运算符
*会将字符串转换为数字(如果可以的话)。事实上,只计算价格并查看结果是否为 NaN 而不是测试输入更简单。
标签: javascript jquery