Невозможно изменить функцию вызова JS в reg.cgi, используя .tmpl

0

Я работаю на сайте. На этом сайте есть страница регистрации reg.cgi, которая использует шаблон registration.tmpl. Я включил некоторые javascript в registration.tmpl. Код javascript имеет простую функцию, которую нужно вызывать каждый раз, когда пользователь меняет параметр выбора (onchange = "myCoolFunction()"), но он не будет запускаться. Я думаю, это из-за Perl. Может быть, мне нужно изменить reg.cgi, или я ошибаюсь.

В хром-консоли есть одна ошибка:

  • Uncaught ReferenceError: myCoolFunction() не определен

Определение:

  $(document).ready(function(){
  function myCoolFunction() {
        if ($("#payment_card").val() == '00') {
            $('input[name="cvv2"]').prop('disabled',true);
        }
        if ($("#payment_card").val() == 'VI') {
            $('input[name="cvv2"]').val("");
            $('input[name="cvv2"]').removeAttr('disabled');
            $('input[name="cvv2"]').attr('maxlength','3');
        }
        if ($("#payment_card").val() == 'AM') {
            $('input[name="cvv2"]').val("");
            $('input[name="cvv2"]').removeAttr('disabled');
            $('input[name="cvv2"]').attr('maxlength','4');
        }
  };
}
);

И звонок:

<select id="payment_card" onchange="myCoolFunction()">
  <option value="00"></option>
  <option value="VI">VISA, MC</option>
  <option value="AM">AMEX</option>
</select>

Я тестировал простой javascript + HTML локально, и ошибок не было. Это сработало, но онлайн на сервере с cgi он не будет работать. Если у кого-то есть опыт работы с.cgi + tmpl + javascript, было бы здорово помочь или посоветовать мне. Правильно ли включать javacript в.tmpl, что используется в.cgi? Спасибо.

  • 0
    Похоже, в вашей функции есть синтаксическая ошибка. Не могли бы вы показать это определение? Кроме того, как вы включаете сценарий на странице?
Теги:
cgi

2 ответа

0
Лучший ответ

Я решил это с помощью window.onload и удалил document.ready, ниже определения функции: window.onload = function(){myCoolFunction()};

1

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

Если вы выберете весь код с панели в jsfiddle и вставьте его в Notepad++, вы должны увидеть характер проблемы как знак вопроса "?" в самом конце вашего кода. Удалите этот знак вопроса, затем скопируйте и вставьте код из Notepad++, и проблема не исчезнет.

Что касается myCoolFunction() is not defined. Пожалуйста, поделитесь своим кодом, чтобы мы могли видеть, где вы делаете неправильно.

Изменить: (на основе вашего ответа, почему он не работает на jsFiddle)

JSFiddle обертывает ваш код javascript в вызове onLoad по умолчанию, поэтому myFunction определяется только в этой области функций. Перейдите в No wrap-in, и ваш код будет работать, как ожидалось. Смотрите, это работает: http://jsfiddle.net/chankeypathak/SB3gd/2/

  • 0
    Я не использовал jsfiddle для этого. Все, что я тестирую, я делаю локально с XAMPP. Но я вставил сюда jsfiddle, и он тоже не будет работать на jsfiddle. Почему это работает на моем XAMPP.
  • 0
    Смотрите обновленный ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню