我有一个带小数值的下拉列表。 (格式化为字符串)
<select id="SizeBox">
<option id="size_5" value="14.00">14</option>
<option id="size_6" value="16.00">16</option>
<option id="size_7" value="18.00">18</option>
<option id="size_8" value="20.00">20</option>
<option id="size_9" value="24.00">24</option>
<option id="size_10" value="28.00">28</option>
<option id="size_11" selected="selected" value="28.35">28,35</option>
<option id="size_12" value="36.00">36</option>
</select>
我总是选择所选值并将其保存在变量中:
var backupSize = "28.35";
当用户选择其他尺寸并想要撤消其更改时,我会提供一个重置按钮,该按钮应该再次选择backupSize值。
SelectSize(parseFloat(backupSize).toFixed(2));
function SelectSize(size) {
$('#SizeBox').val(size);
}
问题是使用这个toFixed方法会删除我的小数精度并将值28.00传递给SelectSize函数。当然,我的列表中没有这个值的选项,因此重置功能失败。
如果我使用没有toFixed(2)部分的SelectSize函数,那么像“20.00”这样的值将作为“20”传递,而SelectSize函数也将无法在下拉框中重置大小。
我已经搜索了处理这些十进制数的函数,就像字符串一样但到目前为止还没有成功。我该如何解决这个问题?
感谢您的帮助!
答案 0 :(得分:2)
以下内容适用于任何值: 工作示例:http://jsfiddle.net/4DSNS/2/
var backupSize = 20
var backupSize = 28.35
var backupSize = "28.35"
var backupSize = "20.00"
var backupSize = "20"
var backupSize = "28.35"
var backupSize = "28,35"
function SelectSize(size) {
size = size.toString().replace(',','.');
parseFloat(size).toFixed(2);
$('#SizeBox').val(size);
}
SelectSize(backupSize);
答案 1 :(得分:0)
修改你的selectSize函数:
SelectSize(backupSize);
function SelectSize(size) {
$("#sizebox option").attr("selected","");
$("#sizebox option[value='"+size+"']").attr("selected","selected");
}
答案 2 :(得分:0)
Hiya tdk plz看到工作演示 http://jsfiddle.net/B3Uwj/1/
如果我错过了什么,请告诉我,这应该是正常的。即。
当20.00通过时它起作用,它不会失败引用:
如果我使用没有toFixed(2)部分的SelectSize函数,那么 像“20.00”这样的值将作为“20”和SelectSize函数传递 也将无法在下拉框中重置大小。
Jquery代码
var backupSize = "20.00";
SelectSize(parseFloat(backupSize).toFixed(2));
function SelectSize(size) {
alert("Size is (Preserving the .00 ==> " + size);
$('#SizeBox').val(size);
}
// mini jQuery plugin that formats to two decimal places
(function($) {
$.fn.currencyFormat = function() {
this.each( function( i ) {
$(this).change( function( e ){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
});
});
return this; //for chaining
}
})( jQuery );
// apply the currencyFormat behaviour to elements with 'currency' as their class
$( function() {
$('.currency').currencyFormat();
});