我搜索了很多,我几乎可以完成所有任务,但是所有的一起...... 所以,我输入了type =" text"
<input type="text" pattern="^[1-9]|^[-,0-9]{2,18}$" class="form-control commas-decimal-points" id="tot-uniques-display-<%%= model.adPartnerId %>" placeholder="eg. 100,000,000" name='network_data[display][total_monthly_uniques]' value="<%%= model.display.total_monthly_uniques %>"/>
pattern="^[1-9]|^[-,0-9]{2,18}$"
此模式仅验证数字,不超过14位,不允许从&#34; 0&#34;开始。
我必须允许用户输入数字,必须从数字&gt;开始0并且不超过14个数字,用户可以在特殊地方输入逗号 OR 如果用户只输入数字我必须通过JS添加逗号。如果用户自己输入逗号,我必须根据模式进行验证。
1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
10,000,000,000
100,000,000,000
1,000,000,000,000
10,000,000,000,000
我在骨干视图中有这样的功能:
inputEventOnInput: function (e) {
var me = this;
// skip for arrow keys
if(event.which >= 37 && event.which <= 40) return;
// format number
me.$el.find(':input[type="text"]').val(function(index, value) {
return value
.replace(/\D/g, "")
.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
});
},
它触发&#34;输入&#34;事件并在用户仅输入数字时添加逗号。 如果用户输入10000000,它将被10,000,000输入替换。
如何定义使用输入逗号,然后根据模式验证此逗号,并在错误的逗号上触发HTML5:无效事件?
答案 0 :(得分:1)
您可以使用以下内容验证逗号是否符合模式:
^([1-9]\d{0,2}(,\d{3}){0,3})$|^([1-9]\d?(,\d{3}){4})$
请参阅DEMO
您可以使用此Code on JSFiddle来处理所有三种情况。