2017-03-16 4 views
2

私は繰り返し入力する必要がある多くの入力フィールドを持っているので、通常タブを使用してフォームをナビゲートします。入力間のタブ移動時にすべてのテキストをハイライト表示しないようにするにはどうすればよいですか?

フィールドには、デフォルトの接尾辞の値を前に付ける必要があります。マウスクリックで入力にフォーカスすると、期待どおりに動作します。

私は入力間でタブを押すと、私の場合、望ましくない動作であるすべてのテキストが選択されます。

はこれを見ている:

function setCaretPosition(elem, caretPos) { 
 
    if (elem == null) return; 
 
    if (elem.createTextRange) { 
 
    var range = elem.createTextRange(); 
 
    range.move('character', caretPos); 
 
    range.select(); 
 
    } else if (elem.selectionStart) { 
 
    elem.focus(); 
 
    elem.setSelectionRange(caretPos, caretPos); 
 
    } else { 
 
    elem.focus(); 
 
    } 
 
} 
 

 
$(document).ready(function() { 
 
    $('input').focus(function() { 
 
    setCaretPosition(this, 0); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="input1" value=" km/h" /> 
 
<input type="text" id="input2" value=" kg" />

  • あなたが入力のいずれかの内部をクリックすると、キャレットが最初に設定されています。
  • タブ入力間にキャレットが設定されていません。代わりに、入力内容全体が強調表示されます。

タブナビゲーションを使用すると、テキスト入力がその内容をハイライト表示しないようにするにはどうすればよいですか?

私はsetTimeoutを使わないで答えが好きです(もし可能であれば)。単にChromeとエクスプローラで

+0

[JavaScriptを使用してすべてのテキストの選択を解除する機能はありますか?](http://stackoverflow.com/questions/6562727/is-there-a-function-to-deselect-all-text- use-javascript) – imtheman

+1

重複していると思われる場合は、その重複を理由としてクローズするのはなぜですか? –

+0

をクリックすると正常に機能していますか?クリックするとキャレットは位置0に移動しません! –

答えて

3

(エッジおよびFirefox上で動作していない)、:FirefoxとChromeで

<input type="text" value=" km/h" onfocus="this.setSelectionRange(this.value.length, this.value.length)"/> 
 
<input type="text" value=" kg" onfocus="this.setSelectionRange(this.value.length, this.value.length)"/>

(エッジやエクスプローラ上で動作していない)

jQuery.fn.putCursorAtEnd = function() { 
 
    return this.each(function() { 
 
    // Cache references 
 
    var $el = $(this), el = this; 
 
    
 
    // Timeout seems to be required for Firefox 
 
    setTimeout(function() { 
 
     el.setSelectionRange($el.val().length, $el.val().length); 
 
    }, 0); 
 
    }); 
 
}; 
 

 
var searchInput = $("input"); 
 

 
searchInput.on("focus", function() { // could be on any event 
 
    searchInput.putCursorAtEnd() 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" value=" km/h" /> 
 
<input type="text" value=" kg" />

+0

申し訳ありませんが、動作しません。最初の入力に注目してTabをクリックすると、2番目の入力にフォーカスしてそのすべての内容が選択されます。最新のFirefoxでテスト済み。 – stil

+0

FFの動作が違うことを確認できます: –

+0

クロムとエクスプローラで動作していますが、firefoxで動作していません。 – Mindless

関連する問題