2012-01-02 19 views
2

我正在使用以下代码来验证该字段是否为空。使用javascript的整数验证

<label>Sermon Title</label> 
<input class="text-input small-input" type="text" id="sermon_title" name="sermon_title" /> 
<span id="stitlespansuccess" class="input-notification success png_bg" style="display: none;"></span> 
<span id="stitlespanerror" class="input-notification error png_bg" style="display: none;"></span> 

    $(document).ready(function() { 
     var submit   = false; 
     $('#sermon_title').bind('focusout', function() { 
      var sermon_title  = $('#sermon_title').val(); 
      var pid  = $('#preacher').val(); 
      if(sermon_title == "") { 
       $('#stitlespanerror').html("Title required"); 
       $('#stitlespanerror').show(); 
       $('#stitlespansuccess').hide(); 
       submit = false; 
      } 
      else 
      { 
       $('#stitlespanerror').hide(); 
       $.post("<?= site_url('admin/sermons/uniquetitle/') ?>", { sermon_title: sermon_title,pid:pid }, 
       function(data){ 
        if("success" == data.trim()) { 
         $('#stitlespansuccess').show(); 
         submit = true; 
        } 
        else 
        { 
         $('#stitlespansuccess').hide(); 
         $('#stitlespanerror').html("Title already taken"); 
         $('#stitlespanerror').show(); 
         submit = false; 
        } 
       }); 
      } 
     }); 
}); 

我想检查该值是否为整数。

回答

4

这是正确的函数来检查整数(例如,一些像:1.0等')

function is_int(value){ 
    if((parseFloat(value) == parseInt(value)) && !isNaN(value)){ 
    return true; 
    } else { 
    return false; 
    } 
} 
+0

可将其简化为单行函数:'return parseFloat(value)=== parseInt(value)&&!isNan(value);' – nnnnnn 2012-01-02 09:20:46

+2

P.S.请注意,上面认为“012”不是一个整数......不使用parseInt()而不指定基数:'parseInt(value,10)' – nnnnnn 2012-01-02 09:47:42

+0

好点 - 您需要将基数添加到parseInt 。 – 2012-01-02 11:35:07

1

试试这个

如果(isNaN(值))

希望它会工作

+0

这不起作用:如果什么值是“123.45”? – nnnnnn 2012-01-02 09:19:03

0

你想检查一下是什么值是一个整数吗?当然不是布道标题?这里有很多代码与您的问题没有任何关系。

无论如何,假设你想验证用户输入值,以确保它是一个整数,你可以将其转换为数字,然后测试数目是否等于相同数(四舍五入):

function isInteger(val) { 
    var n = +val; // convert with unary plus operator 
    return val != "" && n === Math.floor(n); 
} 

请注意,空字符串将转换为0,因此val不是空字符串的测试。

潜在问题:上述问题将“1.000”视为一个整数 - 是否可以接受?

如果您不希望用户输入小数点另一种方式接近它是用正则表达式来验证,确保只有数字已输入(没有小数点):

function isInteger(val) { 
    return /^-?\d+$/.test(val); 
} 

如果您需要将其限制在一定的位数,这是很容易用正则表达式:

// e.g., max four digits, optional minus sign: 
return /^-?\d{1,4}$/.test(val); 

(注:`isNaN() is "broken"

+0

这只是一个例子 – Natasha 2012-01-03 05:15:26

+0

当然。我的观点是,如果你提供一个例子,试图让它与手头的问题有关。 – nnnnnn 2012-01-03 05:28:42