2012-02-26 84 views
0

我在使用文本輸入字段中的.change文件時遇到了一些麻煩。如果所說的答案是正確的(在這種情況下等於1),它應該使用庫(工匠)在畫布上繪製文本,但它不是這樣做的。無法使用.change來驗證答案

這裏的JavaScript的

$('#atomnum').change(function(){ 
     ans = $('#atomnum').val(); 
    }); 

    if(ans == 1){ 
     artisan.drawText('canvas', 200, 300, 'Correto!', '#FFFFFF'); 
    }else{ 
     return false; 
    } 

輸入的id是atomnum。任何幫助?

編輯 - 嘗試過那些機器人,仍然無法正常工作。 Here的整體功能被調用,也許這çistener不應該是函數內部...

+1

爲什麼你有一隻流浪閉合括號('}')在您的代碼示例的結束?我認爲你的'if' /'else'應該在'change()'裏面。 – 2012-02-26 19:16:30

回答

0

如果牽伸動作應該在.change()事件中發生的,將其放在:

$('#atomnum').change(function(){ 
    ans = $('#atomnum').val(); 
    if(ans == 1){ 
     artisan.drawText('canvas', 200, 300, 'Correto!', '#FFFFFF'); 
    }else{ 
     return false; 
    } 
}); 

否則,您需要一個附加功能來檢查ans的新值並據此採取行動。

注 - 刪除一個額外的收盤}

0

該代碼不能工作。您在綁定事件一次後執行檢查代碼,而不是在元素更改時運行它。

試試這個:

$('#atomnum').change(function(e) { 
    var ans = $('#atomnum').val(); 

    if(ans == '1') { 
     artisan.drawText('canvas', 200, 300, 'Correto!', '#FFFFFF'); 
    } 
    else { 
     e.preventDefault(); 
    } 
}); 
+0

這隻適用於輸入數字後在畫布外點擊......奇怪...... – HolyThunder 2012-02-27 16:28:28

+0

這就是'change'事件對文本字段的作用 - 只要它失去焦點,事件就會在值被改變時觸發。如果你不想要這個,你需要同時使用'keyup'和'change'(以確保它總是觸發,即使在通過上下文菜單粘貼之後)。 – ThiefMaster 2012-02-27 17:01:32

+0

除了你不需要專注於別的地方之外,是否使用keyup和change一樣? – HolyThunder 2012-02-28 21:27:21