jquery - 使用jQuery从字符串中提取十进制数,其中有一堆其他值
问题描述
我正在尝试使用 jquery 从 div(因此在字符串中)中提取十进制数。我的问题是我不能使用值(这对我来说可能是理想的)所以我必须处理一个字符串。
我的另一个问题是,不幸的是,在我的字符串中还有其他数字。
所以我在我的号码前面加了一个美元符号,这样我就可以很容易地隔离它。
我的数组如下(此时只是一个带有一些选择的选项标签):
<select id="easypost" name="shipping_method">
<option>
Select shipping method...
</option>
<option value="2">
Priority $38.565
</option>
<option value="1">
ExpeditedParcel $19.56
</option>
<option value="3">
RegularParcel $19.56
</option>
<option value="4">
Xpresspost $24.66
</option>
<option value="5">
PurolatorExpress9AM $84.855
</option>
<option value="6">
PurolatorExpress1030AM $52.665
</option>
<option value="7">
PurolatorExpress $32.175
</option>
<option value="8">
PurolatorGround $31.605
</option>
</select>
我正在用我的结果做一些数学运算,但重要的部分是变量双数。我只需要在我猜的美元符号之后提取数字,但我愿意收集关于这个主题的更好建议。
$('#easypost').change(function() {
var shipping = $("#easypost option:selected").text();
var doublenumber = Number(shipping.replace(/[^0-9\.]+/g, ""));
var tax_per = ((doublenumber / 100) * 13).toFixed(2) / 1;
var finaltotal = (totnumber + doublenumber + tax_per).toFixed(2) / 1;
console.log(doublenumber + " " + tax_per + " " + finaltotal);
$('.total').text(finaltotal);
}
如您所见,我的问题是当我尝试从 PurolatorExpress9AM 84.855 美元或 PurolatorExpress1030AM 52.665 美元中提取值时。
解决方案
$('#easypost').on('input', function(){
//version using the text
//get the text and trim it
var value = $('option:selected', this).text().trim();
//ignore the first option
if (value.indexOf('$') > -1) {
//get all the text after the $ and parse it
value = parseFloat(value.substr(value.indexOf('$') + 1));
console.log(value);
}
//version using the data field
var value2 = $('option:selected', this).data('cost');
if (value2) {
console.log(value2);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="easypost" name="shipping_method">
<option>
Select shipping method...
</option>
<option value="2" data-cost="38.565">
Priority $38.565
</option>
<option value="1" data-cost="19.56">
ExpeditedParcel $19.56
</option>
<option value="3" data-cost="19.56">
RegularParcel $19.56
</option>
<option value="4" data-cost="24.66">
Xpresspost $24.66
</option>
<option value="5" data-cost="84.855">
PurolatorExpress9AM $84.855
</option>
<option value="6" data-cost="52.665">
PurolatorExpress1030AM $52.665
</option>
<option value="7" data-cost="32.175">
PurolatorExpress $32.175
</option>
<option value="8" data-cost="31.605">
PurolatorGround $31.605
</option>
</select>
推荐阅读
- python - 如何在 Google Cloud Platform 的 DataStore 中存储值?
- apache-spark - 为什么增加 spark.sql.shuffle.partitions 会导致 FetchFailedException
- grammar - 下推自动机构造
- wordpress - 未设置摘录时用于更改摘录内容的 WordPress 钩子
- c - How do I solve "expected a ';' in C"
- python-3.x - 为什么使用 cv2.getRotationMatrix2D 和 cv2.warpAffine 旋转图像会返回零矩阵
- tensorflow - 使用 tensorflow 来实现句子分类 HuggingFace BERT
- lightgbm - LGBM 决策树拆分 - 目标连续变量
- node.js - Postgres 数据库未连接,.sync() 无法解析。续集,PostgreSQL,节点
- python - 扩展不加载到 ipynb