2016-08-12 118 views
0

我这里有一个输入框防止表单提交基于在框中输入

<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");    
}); 

如何组合这两个部分,以便我不允许用户在框中提交相同的数字?

+1

将代码放在一个命名函数中,该函数根据字段是否有效返回“true”或“false”。然后你可以在'keydown'和'submit'处理程序中调用它。 – Barmar

+0

^这样做,但你将不得不找出另一种方法来检查输入中是否有相同数字的倍数,因为你将无法检查键击 – adeneo

+0

_“,而我在这里禁止用户在框中输入相同的数字“_你的意思是输入的值必须是唯一的吗? – guest271314

回答

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/

+0

你做了一点点不同...谢谢! – Ris

+0

是您的要求吗? –