HOWTO · JavaScript

在 JavaScript 中只輸入數字

預設情況下,HTML 的輸入欄位採用 text 屬性並相應地接受幾乎所有可能的字元。如果我們只希望接受數字型別值,我們將不得不將輸入欄位的屬性設定為數字型別,並新增一些 JavaScript 程式碼行以確保大小寫。

JavaScript 中沒有特定的方法或屬性可以直接使 HTML input 欄位僅採用 number 型別的值。相反,input 欄位有一個屬性 number,它只在輸入框中接受數字型別值。

執行僅過濾數字任務的另一種方法是將 input 欄位型別設定為 input,這意味著啟用幾乎所有可能的輸入。這會考慮字母數字值。

然後,JavaScript 程式碼中隱含的特定條件將過濾為僅接受數字。

在以下情況下,我們將使用 keypress 事件並獲取它的 keyCode。稍後,根據我們的動機,我們將設定一些條件來僅驗證數字型別的資料。

一個示例將具有 number 屬性,而另一個示例將具有輸入欄位的 input 屬性。

在 JavaScript 中使用欄位屬性 number 併為 keyCode 設定條件

我們的示例將有一個對應於 JavaScript 程式碼庫的輸入欄位。最初,我們將通過 event.keyCodeevent.which 獲取 keyCode

這個 keyCodewhich 的工作方式因瀏覽器而異。因此,最終基於程式碼,我們將過濾值。

讓我們檢查一下程式碼。

<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>

輸出:

使用欄位屬性號併為 keyCode 設定條件

可以看出,我們按下了 a=65b=66c=67,但這些值沒有被接受。後來,值 42 被放置在輸入框中。

在 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>

輸出:

使用欄位屬性輸入併為 keyCode 設定條件