2017-03-14 11 views
0

私はphp(mysqlから)のループで生成されたいくつかのテキサスボックスを持っています。各テキストエリアは、onchangeイベントを使用してdbに値を保存していました。私はそれを保存するより良い方法はonkeyupであると決めましたが、遅れてしまいましたが、私はこれを渡す問題を持っています。遅延機能onkeyupは保存されませんthis.value

<textarea class="form-control" rows="3" id="disgnostic<?php echo $orden;?>" 
onkeyup="delay(function(){userAction('update_diag', '<?php echo $orden;?>', this.value);}, 1500)"> 
<?php echo $r['diagnostico']; ?> 
</textarea> 

JS:

は、ここでは、コードです

var delay = function(){ 
    var timer = 0; 
    return function(callback, ms){ 
     clearTimeout (timer); 
     timer = setTimeout(callback, ms); 
    } 
}(); 

すべてがうまく動作、唯一this.valueリターンがundefied。ダライなしでうまくいく!

ありがとうございます!

答えて

0

すべて文脈から離れて、大丈夫です。 onkeyupの機能を変更すると、この方法は、ハード、この文脈ではJavaScriptと私に混乱することができ、関数のコンテキストに

を結合し、あなたの問題

onkeyup="delay(function(){userAction('update_diag', '<?php echo $orden;?>', this.value);}.bind(this), 1500)" 

お知らせあなたの匿名onkeyupの機能上のバインドを解決しますニュアンスを理解するためにthis chapterをお勧めします

0

あなたは、このためのコンテキストを失うされている遅延機能を呼び出すと、あなたはこのようsomehingを実行する必要があります。

HTML:

<textarea class="form-control" rows="3" id="textOne" 
onkeyup="delay(function(){alert(this.value);}.bind(this), 1500)"> 
</textarea> 

とJS上:

var delay = function(){ 
    var timer = 10; 
    return function(callback, ms){ 
    clearTimeout (timer); 
    timer = setTimeout(callback, ms); 
    } 
}(); 
関連する問題