2012-01-10 4 views
1

は、次のことを考える:私はそれが入力の現在の値の末尾にカーソルを置くだろうとフォーカス機能は、変更される可能性がどのようにチェーン内でjqueryのフォーカス機能を拡張または変更するにはどうすればよいですか?

$("#dataField").focus().autocomplete({ 
     minLength:5, 
     cache:false, 
     source:"${request.contextPath}/ajaxActions/getdata", 
     select:function (event, ui) { 
      populateForm(ui); 
     } 
    }); 

答えて

1

私はこれを実際にテストしていませんが、必要なことは多かれ少なかれ実行する必要があります。 move cursor to the beginning of the input field?

+0

大変ありがとうございました!私が試したときには、フィールドに焦点を当てていませんでしたが、すぐに私はそれを編集し、それをチェックすることができます – barrymac

+0

私は編集する前に、ここにコードをコピーしているかもしれません。特に、oldFocus関数が呼び出される行。私は今、jQueryの.proxy()の代わりに.apply()を使用しています - 今はうまくいくでしょう:) – KOGI

+0

私は実際に行って、これは今、完璧に感謝しています! – barrymac

1

$("#dataField").focus(function() { 
     $(this).val($(this.val()); 
}).focus(); 

このアプローチはthis linkでものを行うためのjQueryの道であり、したがって、あなたが必要と何をすべき:

(function() 
{ 
    var oldFocus = $.fn.focus; 
    $.fn.focus = function(arg1, arg2) 
    { 
     // ======== Call Old Function 
     var result = oldFocus.apply(this, arguments); 

     // ======== Additional Functionality 
     // Logic here to move your cursor 

     return result; // -- this preserves ability to chain 
    } 
})(); 

は、実際にカーソルを移動するために、このSO質問を参照してください。

+0

これは素晴らしいアプローチですが、技術的に求められていたものではありません。この解決策はイベントハンドラを作成します。そのため、フォーカスがエレメントに(ユーザまたはプログラムによって)与えられた場合、カーソルは(事実後に)移動されます。 OPは実際にfocus()メソッド自体を変更する方法を要求しました。 – KOGI

+0

また、ここで使用されているカーソルの移動方法(要素の値を設定する方法)は、ブラウザの動作のばらつきにより、ブラウザ間で動作する場合と動作しない場合があります。 – KOGI

+0

寄付いただきありがとうございますが、私はチェーンの能力を維持するためにコギに答えを与えなければなりませんでした – barrymac

関連する問題