1

该功能不起作用,它没有将值放入“输入”中。

function example(id){
    this.code= function(){$('.'+id).val(id)}
    this.validate= function (){
        $('.'+id).keyup(function (e){
            if(e.keyCode==13) this.code();
        })
    }
}

身体

<input type="text" class="test"/>
<input type="text" class="test1"/>
<script type="text/javascript">
    var test= new example('test')
    var test1= new example('test1')
    test.validate()
    test1.validate()
</script>
4

2 回答 2

4

您的 keyup 事件处理程序将具有不同的“this”。您可以使用 bind 来纠正问题

keyup(function (e){
if(e.keyCode==13) this.code();
}.bind(this))

当您绑定到一个事件时,将使用“this”关键字调用处理程序,该关键字设置为触发事件的对象,而不是创建事件的对象。

于 2013-07-31T13:07:48.833 回答
1

好吧,当涉及到这个时,javascript有点难以理解..

这篇文章解释了其中一些http://www.crockford.com/javascript/inheritance.html 但解决它的一种方法是

function example(id){
    this.code= function(){$('.'+id).val(id)}
    var self = this;
    this.validate= function (){
        $('.'+id).keyup(function (e){
            if(e.keyCode==13) self.code();
        });
    }
}
于 2013-07-31T13:13:06.123 回答