j查询输入更改事件更新自我



我正在尝试使用 jQuery 输入更改事件格式化和更新输入值。目标是用固定的小数位(即货币(格式化数字。

这是我的代码:(http://jsfiddle.net/xpvt214o/633563/(

我的选择器是类.format-currency所以我可以在我想要的任何输入上使用它。

我可以得到所需的格式(输出到console.log(,但我无法让它使用$( this ).val()更新表单的值。任何想法如何实现这一目标?

$('.format-currency').on('input', function() {
var $input = parseFloat($(this).val());
if (isNaN($input)) {
return false;
}
console.log('DEBUG — change in .format-currency — $input ⇒ ' + $input + '  — new val ⇒ ' + $input.toLocaleString('en-US', {
style: 'decimal',
minimumFractionDigits: 2,
maximumFractionDigits: 2,
useGrouping: false,
}));
$(this).val($input.toLocaleString('en-US', {
style: 'decimal',
minimumFractionDigits: 2,
maximumFractionDigits: 2,
useGrouping: false,
}));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type='number' class='format-currency' min='0.00' max='9999.99' step='0.01' name='fee' />
</form>

把它解析到小数点后两位怎么样?并更新blur事件。您可以使用parseFloat.有些像...

$('.format-currency').on('blur', function(){
const v = $(this).val();
if(isNaN(v) || v === "")//this line may need amending depending on validation
return false;
$(this).val(parseFloat(v).toFixed(2));
});

我想这是不可能的,因为输入类型是数字,所以 val(( 存储为浮点数。 我想我可以将类型更改为文本,但随后我会丢失最小值、最大值和步长......这些曾经/不应该被用作验证器。

最新更新