2016-04-11 15 views
0

Bir sayıyı pozitif sayı olarak doğruladım ancak doğru yanıt vermiyor, yani negatif sayıları da kabul ediyor. Nerede hata yaptım?Bir sayıyı pozitif sayı olarak doğrulayın

<script type="javascript"> 
    function validatenumber(){ 
     var class1=document.getElementById("class"); 
     if((parseInt)class1.value<0){ 
      alert("Please enter positive integer"); 
      return false; 
     } 
    } 
</script> 

<form name="addbook" action="addbook.php" method="get" onsubmit="validatenumber();"> 
    Code:<br/><input type="text" name="code"><br/> 
    Class:<br/><input type="number" name="class"><br/> 
    title:<br/><input type="text" name="title"><br/> 
    price:<br/><input type="number" name="price"><br/> 
    quantity:<br/><input type="number" name="quantity"><br/> 
    category:<br/><input type="text" name="category"><br/> 
    <input type="submit" value="submit"><br/> 
</form> 
+0

validatenumber() nasıl çağrılıyor? – n8wrl

+1

'document.getElementById ("class") 'ın doğru öğeyi aldığından emin misiniz? –

+0

Yorumlardaki hiç kimse henüz açık sözdizimi hatasını fark etmedi mi? Bu, (parseInt) class1.value' değil, eğer bir şey varsa parseInt (class1.value) 'dır. Daha da iyisi, 'parseInt (class1.value, 10)' veya basitçe 'Number (class1.value)'. – Xufox

cevap

3

bu:

parseInt(class1.value, 10) < 0 

10 zorlar tabanı 10 olarak değerlendirilecek ve hangi temellendirmedir olarak JavaScript "tahmin" izin vermeyen:

(parseInt)class1.value<0 

olmalıdır olduğunu düşünüyor. ECMAScript'in önceki sürümlerinde, başlangıçta "0" olan bir dizgiye sahip olmak, sayının sekizlik olarak yorumlanması gerektiğini düşünerek parse'yi kandırır.

ParseInt Documentation

Ayrıca id tarafından elemanı almak için çalışıyoruz, ve adıyla belirttiniz.

Class:<br/><input type="number" name="class"><br/> 

Eğer öğenin bir kimlik verebilir veya takvimi

var class1=document.getElementsByName("class")[0]; 
yerine

kullanabilirsiniz:

var class1=document.getElementById("class"); 

ve sen type="javascript" varsa ve olması gerektiği language="javascript"

https://jsfiddle.net/wvapgjs6/1/

+0

Dış çapı unutma! parseInt (class1.value, 10) ' – LCIII

+0

teşekkürler! – kemiller2002

+0

hala negatif sayıları – user6181297

İlgili konular