Uncaught TypeError: объект не является функцией, кнопка внутри формы - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть следующий фрагмент кода на моей странице jsp:

<form name="programarRutasForm" method="post" action="/SGT_Galp_web/programarRutas.do">   
     <table>
        <tr>
          <td>
            <input type="button" name="insereVuelta" value="Insere Vuelta" onclick="insereVuelta()" id="insereVuelta">
          </td>
          <td>
            <input type="submit" name="criaRuta" value="Cria Ruta" id="criaRuta">
          </td>
        </tr>
     </table>
     ...

Когда я нажимаю кнопку insereVuelta, выдается исключение с сообщением:

Uncaught TypeError: object is not a function

Но если я положу кнопку вне формы, она будет работать нормально.Как это происходит?Мне действительно нужно поместить кнопку рядом с кнопкой отправки внутри формы.

Ответы [ 3 ]

8 голосов
/ 10 апреля 2013

Я полагаю, что проблема связана с функцией, имеющей то же имя, что и сама кнопка. У меня была такая же проблема и смена названия кнопки исправила. Похоже, что изменение названия вашей кнопки исправило ее и для вас.

Гипотеза:

Я бы предположил, что когда имена совпадают, интерпретатор пытается вызвать саму кнопку, а не функцию. Поскольку кнопка не является функцией, она выдает ошибку.

У меня нет объяснения, почему это работает для вас, когда вы вне формы. Возможно, когда кнопка находится за пределами формы, интерпретатор не будет автоматически подключать ее как доступный объект таким же образом, или, возможно, к ней придется обращаться через «родительский объект».

0 голосов
/ 23 мая 2014

insereVuelta используется в качестве имени и идентификатора входа и имени функции, попробуйте изменить имя и идентификатор или имя функции.

0 голосов
/ 13 декабря 2011

Ошибка из-за проблем с точкой с запятой.Проверьте, есть ли в вашем скрипте строки, в которых отсутствуют точки с запятой.Вы спросите: «Тогда почему это работает вне формы?»Автоматическая вставка точки с запятой в некоторых ситуациях дает сбой;Вы можете прочитать об этом подробнее здесь: Каковы правила автоматической вставки точек с запятой (ASI) в JavaScript?

Мне кажется, это решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...