Javascript不允许输入或多或少的内容

Javascript不允许输入或多或少的内容,javascript,Javascript,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_numbe

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”
,它也不起作用。我能做什么?

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>

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>

如果这些输入字段包装在表单中,则可以在表单上使用[onsubmit]侦听器

如果您正在使用,您可以这样做:

$("#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
    }
});
编辑 如果您还想检查keyup,可以执行以下操作:

$("#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
    }
});

如果将这些输入字段包装在表单中,则可以在表单上使用[onsubmit]侦听器

如果您正在使用,您可以这样做:

$("#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
    }
});
编辑 如果您还想检查keyup,可以执行以下操作:

$("#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
    }
});

您是否尝试将输入放入表单中

使用图案对我来说很好:

<input type="text" pattern="\d{16}">

您是否尝试将输入放入表单中

使用图案对我来说很好:

<input type="text" pattern="\d{16}">

除了@HaukurHaf的答案之外,您需要用
包装您的表单以显示验证消息

无标签:

信用卡号码

除了@HaukurHaf的答案之外,您需要用
包装您的表单以显示验证消息

无标签:

信用卡号码

如果您不想使用HTML5属性,您可能希望使用正则表达式和
输入事件(
单击
按键
不够好,因为用户可以使用鼠标或键盘输入[type=“number”]

您想要的模式当然是
/^\d{16}$/
,以确保字段中只有16个数字

var num=document.getElementById('num');
num.addEventListener('input',handler,false);
函数处理程序(){
var模式=/^\d{16}$/;
if(模式测试(数值)){

log('-->OK如果您不想使用HTML5属性,您可能需要使用正则表达式的纯JavaScript实现,并且
输入
事件(
单击
按键
不够好,因为用户可以使用鼠标或键盘进行
输入[type=“number”]

您想要的模式当然是
/^\d{16}$/
,以确保字段中只有16个数字

var num=document.getElementById('num');
num.addEventListener('input',handler,false);
函数处理程序(){
var模式=/^\d{16}$/;
if(模式测试(数值)){

console.log('-->OK添加一个onkeypress以仅允许键入数字。然后添加一个输入模式以仅允许16个字符


信用卡号码

添加一个onkeypress,只允许输入数字。然后添加一个输入模式,只允许输入16个字符


信用卡号码


是否必须是
number
而不是
text
?是的,我只想使用数字,不允许text@eeya
type=“number”
它在语义上不正确,因为信用卡号不是度量值。它作为一个数字没有意义,只是一个碰巧由数字组成的字符串。此代码将导致某些浏览器显示带有加减按钮的文本字段。我使用css隐藏这些按钮@Midgard@Sarah
min
max
有什么问题吗必须是
number
而不是
text
?是的,我只想要用户号码,不允许text@eeya
type=“number”
它在语义上不正确,因为信用卡号不是度量值。它作为一个数字没有意义,只是一个碰巧由数字组成的字符串。此代码将导致某些浏览器显示带有加减按钮的文本字段。我使用css隐藏这些按钮@Midgard@Sarah
min
max
有什么问题吗?输入s字母,我只想要数字,这就是为什么我有type=“number”不,它只允许我输入lettersYeah,但您不能提交值。它能当场显示错误吗?而不必提交表单吗?@Sarah您可以阅读更多关于
模式
属性及其验证内容和内容的方式的信息。您可能还想阅读更多关于通过JavaScript甚至服务器进行事件驱动表单验证的信息-侧面验证。它输入字母,我只需要数字,这就是为什么我有type=“number”不,它只允许我输入lettersYeah,但您不能提交值。它能当场显示错误吗?而不必提交表单吗?@Sarah您可以阅读更多关于
模式
属性及其验证内容和内容的方式的信息。您可能还想阅读更多关于通过JavaScript甚至服务器进行事件驱动表单验证的信息-侧面验证。我可以在k上做吗