【问题标题】:Simple jQuery validation is not giving the desired result简单的 jQuery 验证没有给出想要的结果
【发布时间】:2013-05-27 14:37:14
【问题描述】:

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

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

【问题讨论】:

  • 你能在 JSFiddle.net 上演示你的问题吗?还是在 jsbin.com 上?
  • 呃,我试试,我要学会用这个。
  • 嗯,看来要删除的东西太多了..
  • 如果看不到 HTML 等其他代码,就帮不上什么忙

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


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2013-10-26
    • 2021-03-02
    • 2017-08-25
    • 2021-12-10
    • 2018-10-17
    • 2019-11-27
    相关资源
    最近更新 更多