2011-06-29 46 views
5

我想数字格式的文本字段,如下所示:数字格式(输入掩码)jQuery中

123,456,789

我知道有很多jQuery插件做到这一点,但是,他们都改变了实际价值。我只是想让它看起来格式化,而不是格式化发送。

例如,如果我在我的文本字段中输入23845,我希望它在视觉上转换为23,845,但是当我发送表单时,我希望它发送为23845

有谁知道我该如何做到这一点?我见过的所有其他解决方案都会改变实际提交的值。

回答

2

据我所知,面具插件不改变值而只显示:http://plugins.jquery.com/plugin-tags/mask

[编辑]所有插件的列表中,我用这个一个在我的代码:https://github.com/RobinHerbots/jquery.inputmask([编辑2 ] 并按你想要的方式工作 我已经检查了我使用它的代码,默认行为是它发送的掩码的值,你需要使用一个选项来取消掩码,正如我在评论中所说的)

+0

最后得到它的工作,但它有发送掩码值与表单提交的问题。也许我失去了一些东西...... =( – Ryan

+0

它取决于你选择的输入掩码插件。有些人可以选择揭露(但与我所说的相反 - 对不起 - 它似乎不是默认的行为)。看看'unmask'解决方案在这里:https://github.com/RobinHerbots/jquery.inputmask/issues/8 – JMax

+0

感谢您的帮助!我已经决定inputmask不完全是我想要的(不喜欢如何它有占位符和固定的字符,我不知道如何将它们取出),但是你已经指出我正确的方向,我最终找到了MeioMask。很好,我用.submit( )event。 http://www.meiocodigo.com/projects/meiomask/ – Ryan

0

请尝试以下操作:

<script type="text/javascript"> 

     $(document).on('keyup', '.test', function() { 
      var x = $(this).val(); 
      $(this).val(x.toString().replace(/,/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
     }); 
    </script> 

    <form> 
     <input class="test" type="text" /> 
    </form>