我有一个函数绑定到特定类(附加到数字类型输入)的blur事件,用于强制两个小数位。以下功能适用于Chrome,但在Firefox中不起作用。
代码:
/**
* Force 2 decimal places for specified inputs
*
*/
$(document).on('blur', '.to-dec', function() {
// get value
var value = $(this).val();
// no value
if (!value) return;
// cast to 2 decimal places
value = parseFloat(value).toFixed(2);
// update value
$(this).val(value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" class="to-dec" min="0" step="0.01" required>
如果在设置之前输出value
,我会得到预期值(即输入值为3时为3.00)。
任何人都知道为什么Firefox会阻止设置此值?在使用parseFloat()
设置值时,我已尝试使用val()
。
谢谢!
答案 0 :(得分:1)
让它在FireFox中运行的一种方法是输入类型&#34; text&#34;并且在对代码稍作修改的情况下仍保持类型编号行为,例如在值为NaN时清除输入。
$(document).on('blur', '.to-dec', function() {
// get value
var value = $(this).val();
if (isNaN(value)) {
$(this).val('');
} else if (!value) {
// no value
return;
} else {
// cast to 2 decimal places
value = parseFloat(value).toFixed(2);
// update value
$(this).val(value);
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="to-dec" min="0" step="0.01">
&#13;