【问题标题】:Preventing form submit based on entering the same numbers in the box input防止表单提交基于在框中输入相同的数字
【发布时间】:2016-12-20 00:52:17
【问题描述】:

我这里有一个输入框

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

在这里我不允许用户在框中输入相同的数字,但我真正想要的是阻止表单提交

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

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

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

这是我的表单防止默认

$("form#customer-summary").submit(function(e){
   e.preventDefault();
   alert("prevent submit");             
});

我怎样才能将这两个部分结合起来,这样我就不允许用户在框中提交相同的数字?

【问题讨论】:

  • 将代码放入命名函数中,该函数根据字段是否有效返回true 或false。然后你可以在keydown 和submit 处理程序中调用它。
  • ^ 这样做,但是您将不得不找出另一种方法来检查输入中是否有多个相同数字,因为您将无法仅检查击键
  • “这里我不允许用户在框中输入相同的数字” 你的意思是输入的值必须是唯一的吗?
  • 111 或 222 等数字

标签: javascript jquery html validation input


【解决方案1】:
var inputNode = document.getElementById('my_account');
var customer_summary = document.getElementById('customer-summary');
customer_summary.addEventListener('submit',function(e){
   if(!is_unique(inputNode.value)){
      e.preventDefault();
      alert("prevent submit");
   }             
});

    function is_unique(val){
       for(var i=0;i<val.length;i++){
           if(val.indexOf(val.charAt(i)) != val.lastIndexOf(val.charAt(i))){
              return false;
           }       
       }
      return true;
    }

我认为这应该可以解决问题。工作 jsfiddle:https://jsfiddle.net/m31h1zhg/2/.

【讨论】:

  • 这是您的要求吗?
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
相关资源
最近更新 更多