我有一个 javascript 类c
,我试图在输入提交按钮isValid()
的事件中调用它的方法。onClick
我目前c
在我的提交按钮下方有一组脚本标签。当我点击提交按钮时,我得到
Uncaught TypeError: Object #<HTMLInputElement> has no method 'isValid'
经过一番折腾,我尝试在页面底部的类脚本下方放置相同的提交按钮。这允许正确调用该方法。
这是我的javascript:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
var c = {
container : $('#c_c'),
r1 : 0,
r2 : 0,
c_i : "",
createCaptcha : function(){
var newHtml;
this.r1 = this.randomNumber(10);
this.r2 = this.randomNumber(10);
// alert(this.r1 + this.r2);
newHtml += "<p>What is " + this.r1 + " plus " + this.r2 + "?<br/><input type='text' name='c'></p>";
this.container.html(newHtml);
},
isValid : function(){
// alert(this.r1);
this.c_i = $('input[name="c"]');
if (this.r1 + this.r2 == this.c_i.val()) {
alert('correct!');
return true;
} else{
alert('incorrect =[');
return false;
}
},
randomNumber : function(max){ return Math.floor(Math.random()*(max+1)); }
}
c.createCaptcha();
</script>
这是我的按钮:
<input id="form_0001_ao_submit_input" type="button" name="SUBMIT" value="Submit" style="color:#fff; font-size: 18px; height: 30px; width: 250px; background-color: #00a94f;" onClick="c.isValid();">
我在页面上也有一个带有 ID 的跨度。这就是在createCaptcha()
(对不起,我错过了这条重要的信息 =[)中引用的内容:
<span id="c_c"></span>
所以这是页面的样子:
<span id="c_c"></span>
<input id="form_0001_ao_submit_input" type="button" name="SUBMIT" value="Submit" style="color:#fff; font-size: 18px; height: 30px; width: 250px; background-color: #00a94f;" onClick="c.isValid();">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
var c = {
container : $('#c_c'),
r1 : 0,
r2 : 0,
c_i : "",
createCaptcha : function(){
var newHtml;
this.r1 = this.randomNumber(10);
this.r2 = this.randomNumber(10);
// alert(this.r1 + this.r2);
newHtml += "<p>What is " + this.r1 + " plus " + this.r2 + "?<br/><input type='text' name='c'></p>";
this.container.html(newHtml);
},
isValid : function(){
// alert(this.r1);
this.c_i = $('input[name="c"]');
if (this.r1 + this.r2 == this.c_i.val()) {
alert('correct!');
return true;
} else{
alert('incorrect =[');
return false;
}
},
randomNumber : function(max){ return Math.floor(Math.random()*(max+1)); }
}
c.createCaptcha();
</script>
似乎调用尚未定义的c
对象的方法不允许该方法运行,这是有道理的。
无需将脚本移动到页面顶部(出于性能方面的考虑,js 最好放在底部)来缓解这种情况的最佳方法是什么?谢谢您的帮助!