2012-07-10 73 views
0

我有一類文本框,並嘗試將onChange事件附加到類。以下作品代碼,我得到CALDATA在Firefox的輸出,但在Chrome不起作用JQuery的變化事件的文本框類不工作在鉻

enter code here 
    <ul id="week_list"> 
     <li id="34"> 
      Week 1 - <input class="test_class" type="number" id="week_34" name="week[]"> 
     </li> 
     <li id="35"> 
      Week 2 - <input class="test_class" type="number" id="week_35" name="week[]"> 
     </li> 
    </ul> 

    //Javascript 

var Test = 
{ 
    init: function(config) { 
     this.bindEvents(); 
    }, 
    bindEvents: function() { 
     this.config.clTest.on('change',this.calData); 
    }, 
    calData: function(){ 
     console.log("calculating"); 
    }, 
}; 

Test.init({ 
    clTest: $('.test_class'), 
}); 

+0

err ...顯而易見的問題,控制檯在Chrome中說什麼? – Hogan 2012-07-10 21:26:57

+0

它不打印任何來自calData的內容。但是,它在Firefox中。它在兩種情況下都經過了init和bindevents – Manish 2012-07-10 21:28:40

+0

有趣的是,在我的chrome版本中,它表示「Uncaught TypeError:無法讀取未定義的屬性'clTest'」。我會說解決這個問題,@尼爾有一個辦法。 – Hogan 2012-07-10 21:41:02

回答

1

你需要改變你的JS是這樣的

var Test = 
{ 
    config:null,  
    init: function(c) { 

     config = c; 
     console.log(config); 
     this.bindEvents(); 
    }, 
    bindEvents: function() { 
     config.clTest.on('change',this.calData); 
    }, 
    calData: function(){ 
     console.log("calculating"); 
    } 
}; 

Test.init({ 
    clTest: $('.test_class'), 
});​ 

忘了,包括demo

+0

我試着按照你的建議。它在FF中打印對象,但不是鉻。 FF中也沒有錯誤。在chrome中,只顯示字符串消息 var Test = { config:null, init:function(c){ console.log(「init」); this.config = c; console.log(this.config); this.bindEvents(); }, bindEvents:function(){ console.log(「binding ..」); console.log(this.config.clTest); this.config.clTest.on('change',this.calData); }, calData:function(){ console.log(「calculate」); }, }; Test.init({cTest:$('。test_class'), }); – Manish 2012-07-10 22:03:19

+0

我剛剛在chrom中運行了演示程序,它對我來說工作得很好。 init中有一個額外的console.log,您可能想要刪除它 – Nir 2012-07-11 15:46:29