Javascript不要让输入或多或少地输入

时间:2017-05-24 13:40:03

标签: 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_number" name="credit0[number]" >
</div>
 </div>

我尝试了maxlength = '16'但是它没有用{我还做了min="16" max = "16",它也没有用,我该怎么办?

6 个答案:

答案 0 :(得分:6)

maxlength仅将输入的长度限制为16个字符。 Minmax仅适用于输入类型编号,它们限制实际值,而不是值的长度(字符串的长度)。

我相信您正在尝试验证信用卡?您可以使用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>打包表单以显示验证消息。

没有标签:

&#13;
&#13;
<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;
&#13;
&#13;

带标签:

&#13;
&#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;
&#13;
&#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>