我在网站上工作。该站点有一个注册页面reg.cgi,它使用registration.tmpl模板。我在registration.tmpl中包含了一些javascript。 javascript代码有一个简单的功能,每次用户都需要调用 更改选项选项(onchange =“myCoolFunction()”),但不会触发。我认为这是因为Perl。也许我需要更改reg.cgi或者我错了。
在Chrome控制台中有一个错误:
定义是:
$(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是正确的吗? 谢谢。
答案 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()};