2013-05-27 24 views
0

我在我的asp.net MVC 3次一个使用这种期望的结果:简单jQuery验证是不是给

<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

你可以在JSFiddle.net上显示你的问题演示吗?或在jsbin.com上? –

+0

呃,让我试试,我需要学会使用这个。 – Leron

+0

好吧,它似乎有太多删除.. – Leron

回答

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()即使在float值时也返回TRUE。