防止表单提交基于在框中输入相同的数字

Posted

技术标签:

【中文标题】防止表单提交基于在框中输入相同的数字【英文标题】: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");             
);

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

【问题讨论】:

将代码放入命名函数中,该函数根据字段是否有效返回truefalse。然后你可以在keydownsubmit 处理程序中调用它。 ^ 这样做,但是您将不得不找出另一种方法来检查输入中是否有多个相同数字,因为您将无法仅检查击键 “这里我不允许用户在框中输入相同的数字” 你的意思是输入的值必须是唯一的吗? 111 或 222 等数字 【参考方案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/.

【讨论】:

这是您的要求吗?

以上是关于防止表单提交基于在框中输入相同的数字的主要内容,如果未能解决你的问题,请参考以下文章

防止表单提交字段输入键keydown? [复制]

怎样把表单提交后,把输入框中的数据清空

js阻止form表单重复提交

防止表单自动提交ajax laravel

引导表单输入:防止提交,但允许输入检查

在提交之前向 HTML 表单的输入框中的现有值添加附加字符串