2016-08-12 59 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

是您的要求嗎? –