8

ユーザーが書き込んでいて<input id="inp" type="text">、辞書からの提案を使用することもあります。提案が選択されたら、次のことを行います。

var input = $('#inp'); 
input.val(input.val()+suggestedText+' '); 
input.focus(); // that is because the suggest can be selected with mouse

すべてがうまく機能しますが、結果が長すぎて編集フィールドに収まらない提案を追加した後input.val()、カーソルは文字列の末尾にありますが (これは良いことです)、文字列の先頭のみが編集に表示されます。フィールドなので、カーソルも非表示になります。

キー (値を変更するキー) が押されるとすぐに、「スクロール」が文字列の最後に移動し、先頭が隠れます... キーを押さなくても、この動作を自動的にトリガーするにはどうすればよいですか?

ここで解決策を見つけました-しかし、入力エクスペリエンス全体が変更されるため、良くありません...

4

3 に答える 3

2

やってみました:

var input = $('#inp'); 
input.val(input.val()+suggestedText+' '); 
input.focus(); // that is because the suggest can be selected with mouse

var height=input.contents()[0].outerHeight()
input.animate({
    scrollTop:height
},'normal');

?

于 2013-01-16T12:31:00.397 に答える
1

その間、私はsthも見つけました...マウスを使用して入力をクリックすると、フォーカスが失われ(sthでクリック)、それを取り戻しました(input.focus()のおかげ)-「スクロール」最後に、提案の選択がキーボードで行われた場合、フォーカスが失われることはありませんでした。そのため、それ自体が「スクロール」していませんでした。input.focus() の前に input.blur() を追加しただけで、魅力的に機能するようになりました...実際の例を見てください

http://46.4.128.78/input/
于 2013-01-16T13:49:25.683 に答える
0

これを機能させるには、値を設定する前に focus() を設定する必要があります。これは、次のようにさまざまな方法で修正できます。

input.focus(); // that is because the suggest can be selected with mouse
var input = $('#inp'); 
input.val(input.val() + suggestedText + ' ');

またはこれ:

function changeValue(element, newValue) {
    element.focus();
    element.val(element.val() + newValue + ' ');
}
于 2013-01-16T12:35:27.377 に答える