2012-01-02 77 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