«uncaught TypeError: объект не является функцией» в JavaScript - PullRequest
11 голосов
/ 15 октября 2011

Мне трудно понять, почему это не работает. У меня есть два поля в моей форме, и когда я нажимаю кнопку, другое значение текстового поля изменяется на это, если функция. Как я могу заставить это работать?

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()"/>

Я отлаживаю это в Google Chrome с помощью инструментов разработчика и получаю сообщение об ошибке "uncaught TypeError: Object is not function" в точке, где находится кнопка вычисления.

Ответы [ 4 ]

52 голосов
/ 23 января 2012

Извините за огромный разрыв между вашим вопросом и моим ответом :) Я только что получил ту же проблему и нашел причину - браузер автоматически заполняет объекты на основе атрибутов ID тегов html на странице. Простой тест

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

В вашем случае у вас был элемент с id = 'Calculate', переименуйте его или переименуйте функцию, которую вы используете для расчетов.

7 голосов
/ 29 июня 2012

В моем случае у меня есть

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

и получаю то же предупреждение, когда я вызываю функцию javascript register(), я думаю, что она конфликтует с атрибутами id или title в теге input, поэтому я просто изменяю эту функцию на другое имя, такое как signup() и это работает.

Надеюсь, это поможет. :)

4 голосов
/ 30 ноября 2012

У меня была эта проблема с созданной мной функцией, которая отлично работала с Firefox и выдавала эту ошибку с Chrome и Safari. Решение: изменить название функции. Первоначальное имя было expand(target), заменено на expand_compress (target). И это сработало. Я полагаю, что функция expand() существует где-то еще, чем в Firefox

0 голосов
/ 15 октября 2011

Возможно, вам нужны запятые:

var val = $("#taskentry").validate({
    rules: {
        tripDate: {required: true},
        tripContact: {required: true},
        odometerStart: {required: true}     
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...