2011-10-14 53 views
11

Bunun neden çalışmadığını anlamakta sorun yaşıyorum. Formumda iki alanım var ve bir düğmeyi tıklattığımda, başka bir metin alanı değeri işleve göre değiştirilir. Bunu nasıl çalıştırabilirim? Ben geliştirici araçlarını kullanarak Google Chrome'da bu debuging ediyorum ve hatayı alıyorum"yakalanmamış TypeError: Object bir işlev değil" JavaScript

function calculate() 
{ 
    var odometerStart = parseFloat (document.getElementById('odometerStart').value); 
    var odometerEnd = parseFloat(document.getElementById('odometerEnd').value); 
    var distance = document.getElementById('distance'); 
    var amount = document.getElementById('amount'); 

    distance.value = odometerEnd - odometerStart;  
} 

var val = $("#taskentry").validate({ 
    rules: { 
     tripDate: {required: true} 
     tripContact: {required: true} 
     odometerStart: {required: true}  
    } 
}); 


Odometer: Start <input type="number" name="odometer[Start]" id="odometerStart" min="0" max="999999" placeholder="0" class="required"/><br/> 
Odometer: End <input type="number" name="odometer[End]" id="odometerEnd" min="0" max="999999" placeholder="999999" class="required"/><br/> 
Comments <textarea name="comments" id="comments" rows="2" cols="2"></textarea><br/> 
Distance <input type="text" name="distance" id="distance" value="" placeholder="0.00"/><br/> 
<input type="button" name="calculate" value="Calculate" onclick="calculate()"/> 

: hesapla düğmesi noktada "yakalanmamış TypeError nesne bir işlev değil". kimlik özelliklerine dayanarak tarayıcı otomatik nesneleri doldurur -

Ben de aynı sorun var ve sebep buldum Sorunuzun ve benim cevap :) arasındaki büyük boşluk için
var val = $("#taskentry").validate({ 
    rules: { 
     tripDate: {required: true}, 
     tripContact: {required: true}, 
     odometerStart: {required: true}  
    } 
}); 
+0

'dan başka bir yerde var olduğunu varsayın. Kodunuz çalışır. İşte kanıtlamak için bir keman: JSLint hiçbir şey ve hiçbir istisnalar döndü - http://jsfiddle.net/YahzF/ – 0x499602D2

cevap

-5

Belki virgül gereksinim Sayfadaki html etiketleri. Senin durumunda Basit bir test

<div id='test'>Just testing</div> 
<script type='text/javascript'> 
alert(test.innerHTML); 
</script> 

Eğer id = 'hesapla' bir öğe vardı, yeniden adlandırmak veya hesaplamalar için kullandığınız fonksiyonunu yeniden adlandırın. Benim durumumda

+0

Hayır, virgül çalışmadı :( – user974873

+0

Bir sözdizimi hatası olduğunu söylüyordu. Bir nesneyi, oradaki virgülleri orada tutun – 0x499602D2

+41

Eğer bu cevap işe yaramadı diyor eğer doğru cevap olarak işaretlenmiş? –

50

Maalesef:

+2

Aynı sorun vardı ve bu benim hata – wmarbut

+0

benim için çalıştı. Bu yanıtı kabul etmek için +1 + –

+0

Bu da bana yardımcı oldu –

7

, ben

<input type="button" class="button" id="register" title="register" value="Sign Up!" onclick="register()" />

var ve JavaScript işlevini register() çağırdığınızda aynı uyarıyı almak, bunu input etiketinde id veya title nitelikleri ile çelişki olduğunu tahmin, bu yüzden sadece ben Bu işlevi signup() gibi başka bir adla değiştirip, çalışır.

Umarım yardımcı olur. :)

4

Bu sorunu, oluşturduğum, Firefox ile mükemmel bir şekilde çalışan ve bu hatayı Chrome ve Safari ile veren bir işlevle yaşadım. Çözüm: işlevin adını değiştirir. Orijinal adı, expand_compress (target) ile değiştirilen expand(target) idi. Ve çalıştı. expand() işlevinin Firefox

+2

Bu değişikliğin neden önemli olduğuna dair [Cheery'nin cevabı] 'nı (http://stackoverflow.com/a/8968495/119477) dikkate almak isteyebilirsiniz. "genişletin" –

İlgili konular