我试图在用户提交表单后传递警报。 html就像这样
<form id="profile" name="profile">
<label for="firstName">Male</label>
<input type="text" name="firstname" id="firstName" maxlength="20" class="required" value=""/>
<input type="submit" name="sumit" value="submit"/>
</form>
JS就是
var Form = function(){};
Form.prototype.formValidate = function($form){
$form.on('submit', function(e){
e.preventDefault();
this.test()// this doesn't work
//alert('t') // this works
})
}
Form.prototype.test = function(){
alert('t');
}
var form = new Form();
form.formValidate($('#profile'))
当我收到错误时说..this.test不是函数... 如果我只是在e.preventDefault()之后立即传递警报但是它无法调用我无法通过关键字“this”调用方法。这让我说我的范围不对。我错过了什么?
答案 0 :(得分:3)
在JavaScript中,<div id="some-element"></div>
的值基于范围。每次有this
,您就拥有新范围。在每个函数中,function(){}
将会有所不同,它是根据函数的函数设置的。
您正在执行this
,this.test()
不是this
对象,而是Form
元素。您需要将#profile
值保存到变量中,以便在事件中使用它。
this