我在一个网站上工作。该站点有一个使用registration.tmpl 模板的注册页面reg.cgi。我在registration.tmpl中包含了一些javascript。 javascript代码有一个简单的函数,每次用户调用时都需要调用 更改选择选项 (onchange="myCoolFunction()") 但不会触发。我认为这是因为 Perl。也许我需要更改 reg.cgi 或者我错了。
在 Chrome 控制台中出现一个错误:
- 未捕获引用错误: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 的经验,那就太好了 帮助或建议我。在 .tmpl 中包含 .cgi 中使用的 javacript 是否正确? 谢谢。
最佳答案
粘贴从 jsfiddle 复制的代码后,我在 Chrome 中遇到相同的错误。我认为您也面临着同样的问题。
如果您从 jsfiddle 中的面板中选择所有代码并将其粘贴到 Notepad++ 中,您应该能够看到问题字符为问号“?”在代码的最后。删除这个问号,然后从 Notepad++ 中复制并粘贴代码,问题就会消失。
关于myCoolFunction()未定义
。请分享您的代码,以便我们可以看到您哪里做错了。
编辑:(根据您的回答,为什么它在 jsFiddle 上不起作用)
JSFiddle 默认情况下将您的 javascript 代码包装在页面的 onLoad 调用中,因此 myFunction 仅在该函数的范围内定义。更改为“无包装”,您的代码将按预期运行。看到这个,它有效:http://jsfiddle.net/chankeypathak/SB3gd/2/
关于javascript - 无法使用 .tmpl onchange 调用 reg.cgi 中的 JS 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24108543/