2016-11-15 84 views
0

我有一个应该格式为“XX-YY-123456”的策略号。我正在编写一个格式化程序,该格式程序应该在用户键入策略编号或复制/粘贴时以上述格式自动格式化。需要帮助修改以下代码以符合我的要求。在文本框中输入文本的格式

$('.policynumber').bind("change keyup input",function() { 
    foo = $(this).val().split("-").join(""); // remove hyphens 
    foo = foo.match(new RegExp('.{1,3}', 'g')).join("-"); 
    $(this).val(foo); 
}); 

上面的代码工作正常,如果我必须每3个字符放破折号。

+0

有一个谷歌为“输入掩码”库。有很多已经可用,将为你做这个 –

+0

我试过Google搜索。我发现的大多数东西都是固定长度的,因为上面的代码工作并每3个字符放置一个破折号。此外,上面的代码完美适用于打字以及复制粘贴内容。如果有人能够帮我修改这段代码以满足我的需求,这将会非常有帮助 – user3675261

+0

[This library](https://github.com/RobinHerbots/Inputmask)需要一个自定义掩码。 'aa-aa-999999'会适用于你的情况 –

回答

1

你需要改变正则表达式根据格式:

"1234567890".match(/\d{2}(?=\d{6})|\d+/g).join("-") 

您需要在代码中改变这样的:

$('.policynumber').bind("change keyup input",function() { 
     foo = $(this).val().split("-").join(""); // remove hyphens 
     foo = foo.match(/\d{2}(?=\d{6})|\d+/g).join("-"); 
     $(this).val(foo); 
    });