簡體   English   中英

如果輸入字段為空並且它有一個值檢查它是否是數字,則什么都不做,如果不是則顯示警報

[英]Do nothing if an input field is empty and if it has a value check to see if it is numeric and display an alert if it is not

我正在嘗試制作一個表單,該表單可以自動對模糊的輸入字段求和,並在非活動的“總計:”字段中顯示總和。 如果用戶將焦點放在輸入中然后將焦點移開而不輸入任何內容,並且如果用戶確實輸入了一些我想將字段限制為僅數字的內容,我不想運行任何內容。 如果有更好的方法來做到這一點,請告訴我。 這是我目前的方法的一個例子:

HTML

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test Calc</title>
        <script src="javascript.js"></script>
    </head>
    <body>
        <h1>Sales By Month</h1>
        <form method="get">
            <label for="january">January:</label>
            <input type="text" id="january" class="amount" onblur="isNum(); calculateSum();">
            <label for="february">February:</label>
            <input type="text" id="february" class="amount" onblur="isNum(); calculateSum();">

            <label for="total">Total:</label>
            <input type="text" id="total" disabled>
        </form>
    </body>
</html>

JavaScript

function calculateSum() {

    var elems = document.getElementsByClassName('amount');

    var myLength = elems.length;
    sum = 0;

    for (var i = 0; i < myLength; ++i) {
        sum += elems[i].value *1;
    }

    document.getElementById('total').value = sum;

}

function isNum() {
    var amounts = parseInt(document.getElementsByClassName('amount').value);

    if (isNaN(amounts) == true && amounts != '') {
        alert("Please enter a numeric value");
    }

}

計算功能當前有效,但每次我從字段中跳出時,無論內容如何,​​都會彈出“請輸入數值”警報。

首先你需要測試失去焦點的元素的值,這意味着你應該像這樣在參數中傳遞它

onblur="isNum(this); calculateSum();"

然后在你的 javascript 中的isNum函數中刪除document.getElementsByClassName並使用參數代替......並且不要測試是否amounts != ''因為當你這樣做時它永遠不會等於空字符串amounts = parseInt(elem.value); 你必須在elem.value上進行測試

function isNum(elem) 
{
   var amounts = parseInt(elem.value);

   if (isNaN(amounts) == true && elem.value != '') {
     alert("Please enter a numeric value");
}

這是一個jsFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM