不能onchange使用.tmpl在reg.cgi中调用JS函数

时间:2014-06-08 17:00:25

标签: javascript jquery perl cgi

我在网站上工作。该站点有一个注册页面reg.cgi,它使用registration.tmpl模板。我在registration.tmpl中包含了一些javascript。 javascript代码有一个简单的功能,每次用户都需要调用 更改选项选项(onchange =“myCoolFunction()”),但不会触发。我认为这是因为Perl。也许我需要更改reg.cgi或者我错了。

在Chrome控制台中有一个错误:

  • 未捕获的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包含在.tgi中使用的.tgi是正确的吗? 谢谢。

2 个答案:

答案 0 :(得分:1)

在粘贴从jsfiddle复制的代码后,我在Chrome中遇到了相同的错误。我认为你面临同样的问题。

如果从jsfiddle中的面板中选择所有代码并将其粘贴到Notepad ++中,您应该能够将问题字符视为问号“?”在代码的最后。删除此问号,然后从Notepad ++复制并粘贴代码,问题应该消失。

关于myCoolFunction() is not defined。请分享您的代码,以便我们可以看到您在哪里做错了。

编辑(根据您的回复,为什么它不适用于jsFiddle)

默认情况下,JSFiddle将您的javascript代码包装在页面的onLoad调用中,因此myFunction仅在该函数的范围内定义。更改为No wrap-in,您的代码将按预期运行。看到这个,它有效:http://jsfiddle.net/chankeypathak/SB3gd/2/

答案 1 :(得分:0)

我使用window.onload解决了它并删除了document.ready,在函数定义下面: window.onload = function(){myCoolFunction()};