HOWTO · JavaScript
在 JavaScript 中只輸入數字
預設情況下,HTML 的輸入欄位採用 text 屬性並相應地接受幾乎所有可能的字元。如果我們只希望接受數字型別值,我們將不得不將輸入欄位的屬性設定為數字型別,並新增一些 JavaScript 程式碼行以確保大小寫。
JavaScript 中沒有特定的方法或屬性可以直接使 HTML input 欄位僅採用 number 型別的值。相反,input 欄位有一個屬性 number,它只在輸入框中接受數字型別值。
執行僅過濾數字任務的另一種方法是將 input 欄位型別設定為 input,這意味著啟用幾乎所有可能的輸入。這會考慮字母數字值。
然後,JavaScript 程式碼中隱含的特定條件將過濾為僅接受數字。
在以下情況下,我們將使用 keypress 事件並獲取它的 keyCode。稍後,根據我們的動機,我們將設定一些條件來僅驗證數字型別的資料。
一個示例將具有 number 屬性,而另一個示例將具有輸入欄位的 input 屬性。
在 JavaScript 中使用欄位屬性 number 併為 keyCode 設定條件
我們的示例將有一個對應於 JavaScript 程式碼庫的輸入欄位。最初,我們將通過 event.keyCode 或 event.which 獲取 keyCode。
這個 keyCode 和 which 的工作方式因瀏覽器而異。因此,最終基於程式碼,我們將過濾值。
讓我們檢查一下程式碼。
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<input name="someid" type="number" onkeypress="isNumberKey(event)"/>
<div>
</div>
<script>
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
$(document).ready(function(){
$("input").keydown(function(event){
$("div").html("Key: " + event.which);
});
});
</script>
輸出:
可以看出,我們按下了 a=65、b=66 和 c=67,但這些值沒有被接受。後來,值 4 和 2 被放置在輸入框中。
在 JavaScript 中使用欄位屬性 input 併為 keyCode 設定條件
我們將在此段中類似地為我們的輸入欄位設定 JavaScript 程式碼,但此屬性將設定為 input。預設情況下,Number 型別屬性接受數字並排除其他字元,但在 input 型別的情況下,我們將有權輸入其他字元,如退格、字母等。
在這裡,我們的 JavaScript 程式碼將驗證僅計算數字。
程式碼片段:
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<input type="input" id="edit1" size="11" maxlength="10" />
<div>
</div>
<script>
$(document).ready(function(){
$('[id^=edit]').keypress(validateNumber);
});
function validateNumber(event) {
var key = window.event ? event.keyCode : event.which;
if (event.keyCode === 8 || event.keyCode === 46) {
return true;
} else if ( key < 48 || key > 57 ) {
return false;
} else {
return true;
}
};
$(document).ready(function(){
$("input").keydown(function(event){
$("div").html("Key: " + event.which);
});
});
</script>
輸出: