2016-11-23 1 views
0

私はng-currencyディレクティブを持つ入力要素を持っています。入力に値を追加してクリックし、IE11を使用して入力をクリックすると、キャレットは入力の先頭に移動します。正しい動作は、マウスクリックが発生した位置の位置にキャレットを配置することです。ここでng-currencyを持つ入力要素をマウスでクリックすると、入力フィールドの先頭にキャレットが配置されます(IE11)

は、私はそれが変更される前にelement.selectionStart値をキャッチするNG-焦点とNG-ぼかしディレクティブを使用して、NG-クリックでそれを復元しようとしたソリューションとしてdemo

です。これはIE11では動作しますが、Chromeでは動作しません。これはelement.selectionStartの値が正しくないためです。

この問題を回避する方法はありますか?

答えて

0

かいつまんで、ここで私がなってしまった解決策は以下のとおりです。

<input 
    ng-currency="$ctrl.getCurrencyDirectiveState()" 
    ng-mousedown="$ctrl.setCurrencyDirectiveState(false)" 
    ng-blur="$ctrl.setCurrencyDirectiveState(true)" 
    ...> 
</input> 

キャレット位置が保存されるように、マウスダウンの指令を無効にし、フォーカスがフォーマットさを示すために、失われたときにそれを再度有効にします値。

ここには、ng-currency repoで開いた問題のlinkがあります。

関連する問題