こんにちは。
私はJS初心者なのですが、仕事でjQueryを使って以下のような、テキストボックスの入力を検知したら、その入力値を取得してAPIの引数として与える処理を書いています。
が、Firefoxでテストした場合だけどうしても上手く動いてくれません。
英語の記事なども調べたんですがなかなか良い解答が見つかりません。お知恵をお貸しいただけないでしょうか?
javascript
1var timer; 2 3//テキストボックスの入力を検知したら、入力された値を取得して別の関数に渡す。 4$('#textBox').on('keypress', function(key){ 5 var inputText = $('#textBox').val(); 6 adjustTiming(inputText); 7}); 8 9function adjustTiming(params) { 10//1秒経つ前に入力があったら、setTimeout関数のカウントを0に戻す。 11if (timer) { 12 clearTimeout(timer); 13} 14 15//1秒経ったらhogehogeAPIを叩く。 16timer = setTimeout( 17 function(){ 18 hogehogeApi(params); 19 }, 20 1000); 21}
上記のソースですが、例えばテキストボックスに「北海道」と入力した場合、ブラウザ毎に変数inputTextには次のような値が入ります。
ChromeとIEの場合: 「北海道」
Firefoxの場合:「ほっかいど」
ChromeやIEと同様に、Firefoxから入力した場合でもinputTextには「北海道」という値が入ることを期待しているのですが、中途半端な値が入ってしまい上手くいきません。
また、Firefoxの場合、上記の「北海道」と入力した後に何か別の任意のキー(例:「あ」「i」「 」など)を1回入力するとそこではじめてinputTextに「北海道」という値が入ります。
要するにFirefoxの場合、ChromeやIEに比べて何か余計な文字を1文字入力しないと期待する値がinputTextに入らないことまではわかっているのですが、それが何故なのかがさっぱりわかりません。
どなたかお知恵をお貸しいただけないでしょうか、よろしくお願い致しますm(__)m
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/05 13:45