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