2017-06-03 93 views
-3

我需要只允許在文本框中輸入減號「 - 」的數字和特殊字符,請幫助我,我已經有一個數字限制,但希望減號。只允許在文本框中輸入數字和特殊字符( - )

在此先感謝

<script> 
function isNumber(evt) { 
    evt = (evt) ? evt : window.event; 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    return true; 
} 
</script> 


<input type="text" class="textfield" value="" id="extra7" name="extra7" onkeypress="return isNumber(event)" /> 
+0

嘗試使用正則表達式也許? – xDreamCoding

+0

你應該看看HTML5 ['pattern'](https://developer.mozilla.org/en/docs/Web/HTML/Element/input#attr-pattern)屬性。 – Siguza

+0

可以üPLZ幫助我用相同的代碼使用正則表達式 – jai

回答

0

添加!=45是不夠的。您還需要防止接受無效的密鑰輸入。返回true/false將仍然允許用戶鍵入這些鍵,然後你的代碼看起來什麼都不做。

if ((charCode < 48 || charCode > 57) && charCode != 45) { 
    evt.preventDefault(); 
} 

這樣,只有有效的鍵輸入將出現在文本框中。

+0

thanks niksofteng – jai

0

此正則表達式將檢查數字和 ' - '。如果有其他角色,他們將被替換。

$('.input').keyup(function() { 
    if (!this.value.match(/^(\d|-)+$/)) { 
     this.value = this.value.replace(/[^0-9-]/g, ''); 
    } 
}); 

沒有jQuery的版本:

<input type="text" class="textfield" value="" id="extra7" name="extra7" onkeyup="isNumber()" /> 

function isNumber() { 
    var inputField = document.getElementById('extra7'); 
    if (!inputField.value.match(/^(\d|-)+$/)) { 
     inputField.value = inputField.value.replace(/[^0-9-]/g, ''); 
    } 
} 
+0

如果沒有'jquery'標記Q&A應該是純JS。 – niksofteng

+0

@niksofteng right,added it – petul

相關問題