Javascript接受16个字符(所有数字),不少于或不多
<div class="col-xs-4">
<div style="text-align:left;" class="form-group">
<label for="credit0_number">Credit Card Number</label>
<input type="number" class="inp form-control" id="credit0_number" name="credit0[number]" >
</div>
</div>
我尝试了maxlength = '16'
但是它没有用{我还做了min="16" max = "16"
,它也没有用,我该怎么办?
答案 0 :(得分:6)
maxlength
仅将输入的长度限制为16个字符。 Min
和max
仅适用于输入类型编号,它们限制实际值,而不是值的长度(字符串的长度)。
我相信您正在尝试验证信用卡?您可以使用pattern属性和正则表达式:
<input type="text" pattern="[0-9]{13,16}" required>
这意味着包含数字0-9和13-16个字符长度的任何数字。如果您只想允许16个字符,请尝试:
<input type="text" pattern="[0-9]{16}" required>
答案 1 :(得分:0)
如果这些输入字段包装在表单中,您可以在表单上使用[onsubmit]侦听器。
如果您使用的是jQuery,则可以这样做:
$("#id-of-your-form").on("submit", function(event) {
var len = $("#credit0_number").val().length;
if (len != 16) {
event.preventDefault();
// Show an error message here
}
});
如果您还想检查密钥,可以执行以下操作:
function validCredit() {
return $("#credit0_number").val().length == 16;
}
$("#id-of-your-form").on("submit", function(event) {
if (!validCredit()) {
event.preventDefault();
// Show an error message here
}
});
$("#credit0_number").on("keyup", function(event) {
if (!validCredit()) {
// Show an error message here
}
});
答案 2 :(得分:0)
除了@HaukurHaf的回答之外,您需要使用<form>
打包表单以显示验证消息。
<div class="col-xs-4">
<div style="text-align:left;" class="form-group">
<label for="credit0_number">Credit Card Number</label>
<input type="text" pattern="[0-9]{13,16}" required>
<input type="submit">
</div>
</div>
&#13;
<form>
<div class="col-xs-4">
<div style="text-align:left;" class="form-group">
<label for="credit0_number">Credit Card Number</label>
<input type="text" pattern="[0-9]{13,16}" required>
<input type="submit">
</div>
</div>
</form>
&#13;
答案 3 :(得分:0)
如果您不想使用HTML5属性,您可能希望使用正则表达式和input
事件(click
和{{}来实现纯JavaScript实现1}}不够好,因为用户可以使用带有keyup
的鼠标或键盘。
您想要的模式肯定是input[type="number"]
,以确保该字段中只有16个数字。
/^\d{16}$/
var num = document.getElementById('num');
num.addEventListener('input', handler, false);
function handler() {
var pattern = /^\d{16}$/;
if (pattern.test(num.value)) {
console.log('---> OK <---');
} else {
console.log('KO');
}
}
答案 4 :(得分:-1)
您是否尝试将输入放在表单中?
使用模式对我来说很好:
<input type="text" pattern="\d{16}">
答案 5 :(得分:-1)
添加onkeypress以仅允许键入数字。然后添加一个输入模式,只允许16个字符。
<form>
<div class="col-xs-4">
<div style="text-align:left;" class="form-group">
<label for="credit0_number">Credit Card Number</label>
<input pattern="[0-9]{16}" type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57'>
<input type="submit">
</div>
</div>
</form>