0

我在我的 asp.net mvc 3 视图之一中使用它:

<script language="javascript" type="text/javascript">
    $(document).ready(function () {
        $('.YesNoNotApplicable').change(function () {
            if ($(this).val() === '2') {
                $(this).closest('td').next('td').find('input').show();
            }
            else {
                $(this).closest('td').next('td').find('input').hide();
            }
        });
        $('#submitDocument').click(function () {
            if ($(".checkString16").val().length > 16) {
                alert("The text can be up to 16 symbols");
                return false;
            }
            else if (!$.isNumeric($(".checkULong").val())) {
                alert("Insert integer");
                return false;
            }
            else if (!$(".checkFloat").val().match('^[0-9]*\.[0-9]*$')) {
                alert("Insert float");
                return false;
            }
            return true;
        });
    });
</script>

这里的问题是我得到非常随机的结果。如果像现在这样未注释我的整数检查,我会一直收到整数警报。如果我评论它,那么有时浮动检查有效,有时现在有效,如果它第一次有效,那么即使我已将值更改为浮动,我也会不断收到错误。

4

1 回答 1

1

我将向您推荐另一种在 javascript 中检查数字类型的方法。

首先为数学函数创建一个命名空间,如下所示:

mathFunctions = {}; 

通过使用命名空间(实际上是 js 对象),您可以使您的代码更有条理。

然后,您需要创建一些方法来执行程序所需的验证检查:

mathFunctions.isInt = function(value) {
    return typeof value === 'number' && value % 1 == 0;
}

mathFunctions.isFloat = function(value) {
    return typeof value === 'number' 
        && parseFloat(value) == parseInt(value, 10) && !isNaN(value);
}

因此,当您需要检查数学值时,调用这些方法,您将获得正确的结果。例如看下面的验证代码:

try {
    if ($(".checkString16").val().length > 16) {
        throw "The text can be up to 16 symbols";
    } else if (!mathFunctions.isInt($(".checkULong").val())) {
        throw  "Insert integer";
    } else if (!mathFunctions.isFloat($(".checkFloat").val())) {
        throw "Insert float";
    }
    validationResult = true;  
} catch(exc) {
    alert(exc)
    validationResult = false;
}
return validationResult;

您可以在这篇文章中找到有关方法实现的更多信息:如何检查数字是浮点数还是整数?

编辑

您可以在此页面http://api.jquery.com/jQuery.isNumeric/中看到 $.isNumeric() 即使在浮点值上也返回 TRUE。

于 2013-05-27T16:13:41.100 回答