防止表单提交基于在框中输入相同的数字
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");
);
我怎样才能将这两个部分结合起来,这样我就不允许用户在框中提交相同的数字?
【问题讨论】:
将代码放入命名函数中,该函数根据字段是否有效返回true
或false
。然后你可以在keydown
和submit
处理程序中调用它。
^ 这样做,但是您将不得不找出另一种方法来检查输入中是否有多个相同数字,因为您将无法仅检查击键
“这里我不允许用户在框中输入相同的数字” 你的意思是输入的值必须是唯一的吗?
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/.
【讨论】:
这是您的要求吗?以上是关于防止表单提交基于在框中输入相同的数字的主要内容,如果未能解决你的问题,请参考以下文章