jQuery - 在Firefox中将数字输入值设置为float

时间:2017-04-28 21:01:56

标签: jquery html firefox floating-point

我有一个函数绑定到特定类(附加到数字类型输入)的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()

谢谢!

1 个答案:

答案 0 :(得分:1)

让它在FireFox中运行的一种方法是输入类型&#34; text&#34;并且在对代码稍作修改的情况下仍保持类型编号行为,例如在值为NaN时清除输入。

&#13;
&#13;
$(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;
&#13;
&#13;