简单的jQuery验证没有给出期望的结果

时间:2013-05-27 14:37:15

标签: jquery asp.net-mvc-3 validation

我在我的一个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>

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

1 个答案:

答案 0 :(得分: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;

您可以在此帖子中找到有关方法实施的更多信息:How do I check that a number is float or integer?

修改

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