2012-02-26 37 views
0

テキスト入力フィールドで.changeを使用するのに問題があります。もし答えが正しければ(この場合は1)、キャンバスにテキストを描画するが、そうではないということは、ライブラリ(職人)を使うことになっている。.changeを使用して問題を解決する

はここ

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

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

入力のidがatomnumあるjavascriptのです。どんな助け?

編集 - それらの試したボットは、まだ動作しません。 Hereさんに呼び出される関数全体は、描画アクションが.change()イベント内で起こることになっている場合は、多分そのçistenerは、...

+1

あなたのコードサンプルの最後に浮遊決算-ブレース( '}')持っていないのはなぜ?そして、あなたの 'if' /' else'は 'change()'の中にあるべきだと思います。 –

答えて

0

その関数の内部であってはならないの内側にそれを置く:

$('#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

+0

これは、テキストフィールドの 'change'イベントがどのように機能するかです。フォーカスが失われると直ちに値が変更されるとイベントが発生します。これを望まないのであれば、 'keyup'と' change'の両方を使う必要があります(コンテキストメニューを使ってペーストした後でも、常にトリガーされます)。 – ThiefMaster

+0

キーアップを変更と同じように使用していますが、別の場所にフォーカスする必要はありません。 – HolyThunder

関連する問題