Inputテキストボックスは英語入力時に自動的にイベントをトリガーし、中国語入力時に入力が完了してからイベントをトリガーする
936 ワード
必要:
英語(英語入力法):アルファベットを入力するたびにイベントがトリガーされます.
日文(ピンイン入力法):入力が完了するとイベントがトリガーされ、ピンインを打つたびにトリガーされるわけではありません
実装:
考え方:
compositionstart:入力開始時にトリガー
compositionand:選択語/語の入力完了時にトリガー
直接英語に負けるのはcompositionstart,compositionndイベントをトリガーしないので、最初の標識flagがtrueになってから後ろのsearchRegion()メソッドに進みます.
中国語を入力場合はcompositionstart,compositionndを組み合わせて入力完了状況を判断して後ろのsearchRegion()メソッドを歩かないことを決定する.
ここで加算遅延settimeoutは、デフォルトではinputがcompostionendより先に実行するため、flagの識別が不正確になる.
英語(英語入力法):アルファベットを入力するたびにイベントがトリガーされます.
日文(ピンイン入力法):入力が完了するとイベントがトリガーされ、ピンインを打つたびにトリガーされるわけではありません
実装:
$(function(){
var flag = true;
$('#dev_region_search').on('compositionstart',function(){
flag = false;
});
$('#dev_region_search').on('compositionend',function(){
flag = true;
});
$('#dev_region_search').on('input',function(){
setTimeout(function(){
if(flag){
searchRegion();
}
},0);
});
});
考え方:
compositionstart:入力開始時にトリガー
compositionand:選択語/語の入力完了時にトリガー
直接英語に負けるのはcompositionstart,compositionndイベントをトリガーしないので、最初の標識flagがtrueになってから後ろのsearchRegion()メソッドに進みます.
中国語を入力場合はcompositionstart,compositionndを組み合わせて入力完了状況を判断して後ろのsearchRegion()メソッドを歩かないことを決定する.
ここで加算遅延settimeoutは、デフォルトではinputがcompostionendより先に実行するため、flagの識別が不正確になる.