在输入框中禁用多个相同确切数字的用户

时间:2016-08-12 17:03:37

标签: javascript jquery html input

我这里有一个输入框

<input type="text" size="9" maxlength="9" id="my_account" name="my_account" value="" >

我想禁止用户在框中输入相同的号码?我怎样才能做到这一点 ?提前致谢

我不希望他们能够输入这样的数字

111111111 
or
55555555

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式查找仅包含一个连续数字的字符串:

var validator = /\b(\d)\1+\b/

console.log(validator.test('111')) // true
console.log(validator.test('123')) // false
console.log(validator.test('121')) // false
console.log(validator.test('112')) // false

答案 1 :(得分:1)

@edit如果您不想让用户在键入时输入这些值,您可能只想在值等于2时验证。

你可以听取输入元素的keydown事件并验证它的实际内容和按下的数字如下:

var inputNode = document.getElementById('my_account');

inputNode.addEventListener('keydown', (event) => {
  var inputValue = event.key;
  var inputNodeValue = inputNode.value;
  var length = inputNodeValue.length;

  if (length === 1 && inputNodeValue[0] === inputValue) {
    event.preventDefault();
  }
});

如果你想在提交时验证,只需获取第一个字符的值,并检查彼此是否相等。

答案 2 :(得分:1)

尝试这种模式:

ssh root@PUBLIC_IP -p 2222

注意:

  • 您没有说您想要拒绝信件,如果您这样做,只需将<input type="text" size="9" maxlength="9" id="my_account" name="my_account" value="" pattern="^(?!(\d)\1{8}).*">替换为.*
  • 我把它解释为“相同数字的九倍”。如果你想要,例如不允许“在任何地方使用3次相同的数字”,您需要将其更改为\d*
  • 如果您只想禁用数字的倍数而不添加任何其他数字,请添加行终止正则表达式:^(?!\d*(\d)\1{2,}).*

“任何地方都不是3次相同但必须是数字”的示例:

^(?!(\d)\1*$).*

“不仅多次使用相同的数字而且仍然是数字”的示例:

<input type="text" size="9" maxlength="9" id="my_account" name="my_account" value="" pattern="^(?!\d*(\d)\1{2,})\d*">