If you are looking for a pure vanilla javascript method, you can also use:
document.createRange().selectNodeContents( element );
This will select all the text and is supported by all major browsers.
To trigger the selection on focus, you just need to add the event listener like so:
document.querySelector( element ).addEventListener( 'focusin', function () {
document.createRange().selectNodeContents( this );
} );
If you want to place it inline in your HTML, then you can do this:
<input type="text" name="myElement" onFocus="document.createRange().selectNodeContents(this)'" value="Some text to select" />
This is just another option. There appears to be a few ways of doing this. (document.execCommand("selectall") as mentioned here as well)
document.querySelector('#myElement1').addEventListener('focusin', function() {
document.createRange().selectNodeContents(this);
});
<p>Cicking inside field will not trigger the selection, but tabbing into the fields will.</p>
<label for="">JS File Example<label><br>
<input id="myElement1" value="This is some text" /><br>
<br>
<label for="">Inline example</label><br>
<input id="myElement2" value="This also is some text" onfocus="document.createRange().selectNodeContents( this );" />
<label>
for the label and not thevalue
. You can use JS and CSS to make it look the same, while not being so anti-semantic. dorward.me.uk/tmp/label-work/example.html has an example using jQuery. – Quentin