2017-12-25 7 views
2

入力値を変更すると、コンソールに値がスローされます。html5 type = "number" slowing

$(function(){ 
 
    $('#a, #b').change(function(){ 
 
    console.log($(this).val()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" id="a" value="1"> 
 
<input type="text" id="b" value="1">

を試してみてください:タイプ=数を数回ステップアップ/プレス。

結果:ブラウザのタイプ=番号の一方(1秒以上)ハングが、タイプのため=テキストは瞬時期待

起こっ:経過時間が同じです。 miliseconds(1秒以下)であっても問題ありません。

考えられる理由はtype = numberを確認/入力を最初に解析することです。そのために時間がかかりました。しかし、なぜそれは長い時間がかかって、私のブラウザをハングアップしますか?

+2

変更イベントをトリガする前に値を変更終了するユーザを待ちます。値が変更されたときにイベントが即座にトリガされるようにするには、 '.on( 'input')'を使用します。 – JJJ

+0

私は同じことをして、問題に直面しませんでした。あなたのブラウザのようなプラグインや何かでロードされている – RohitS

+1

それは私に起こります。上向きの矢印を何度もクリックすると、Chromeが1秒以上ハングしてから最終的に値が表示されます(現在の値だけでなく、すべての中間体が1つずつ表示されます)。それは確かに非常に奇妙だ –

答えて

3

.on()inputトリガーで問題を解決できます。 change()は入力type=numberの上下ボタンでは正常に起動していないようです。

$(function(){ 
 
    $('#a, #b').on("input",function(){ 
 
    console.log($(this).val()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" id="a" value="1"> 
 
<input type="text" id="b" value="1">

+0

私は' change'がうまくいかないとは言いません。最終的には現在の値を記録しているので、それはデバウンスされているかのように感じます。 –

+0

@JeremyThilleはい。私たちがクリックするとうまくやっていないことに同意します。しかし、キーボード上の上下の矢印でうまく動作します。 –

+0

私はあなたにすべて同意します。この方法は私の例よりも速いと思われるので、これをチェックします – plonknimbuzz

関連する問題