jQuery 输入掩码小数点

Posted

技术标签:

【中文标题】jQuery 输入掩码小数点【英文标题】:jQuery Input Mask Decimal point 【发布时间】:2014-10-20 23:53:51 【问题描述】:

我正在使用https://github.com/RobinHerbots/jquery.inputmask 的 jQuery 插件,但我似乎无法导出对应于整数和小数的模式。例如,

我需要以下内容才有效:

      10
      150
      12.25
      0.45

目前我正在做的事情:

$('#from_id').inputmask("90,5.90,2");

但这意味着如果用户不指定小数点后的内容,则结果输出为:

例如,如果用户只想输入12(并且他没有指定小数点)输出是

12___.__

(因为掩码在等待小数点)

但如果用户指定小数点,例如 12.00,输出就可以了:

12.00 

有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

尝试使用可选参数greedy like,

$('#from_id').inputmask('mask':"90,5.90,2", greedy: false);

阅读optional-masks-with-greedy-false

您可以验证上述掩码。或者使用你自己的逻辑来验证,

$(function()
    $('#id').on('keyup', function(e) 
        if (!this.value.match(/^\d0,5(\.[0-9]1,2)?$/)) 
            $(this).addClass('error');// adding error class
         else 
            $(this).removeClass('error');// remove error class
        
    );
);

Demo

或者干脆用toggleClass点赞,

$(function() 
  $('#id').on('keyup', function(e) 
    $(this).toggleClass('error', !this.value.match(/^\d0,5(\.[0-9]1,2)?$/));
  );
);
.error 
  color: red;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="id" />

【讨论】:

感谢您的回复,这几乎是我所需要的。但现在的问题是,如果用户在“。”之后没有提供任何内容,我会得到类似:12.(如果用户刚刚输入 12)。清楚吗? 如果末尾的. 让您感到困扰,您可以将整个部分设为可选"90,5[.90,2]"【参考方案2】:

您是否尝试过使用多个掩码?

$('#from_id').inputmask('mask':["90,5.90,2", "999"]);

【讨论】:

以上是关于jQuery 输入掩码小数点的主要内容,如果未能解决你的问题,请参考以下文章

2 位小数输入掩码

带有 JQuery 和正则表达式的输入掩码

jQuery:限制文本框仅输入“数字”的最佳方法是啥? (允许小数点)

jquery输入数字自动补全小数点效果

jquery设置输入数字自动补全小数点效果

如何使用小数点后三位的货币掩码?