Das Problem bei den meisten dieser Lösungen ist, dass sie nicht korrekt funktionieren, wenn sich die Position des Cursors innerhalb des Eingabefeldes ändert.
En onmouseup
ändert die Position des Cursors innerhalb des Feldes, was nach onfocus
(zumindest in Chrome und FF). Wenn Sie die Option "Bedingungslos verwerfen mouseup
dann kann der Benutzer die Position des Cursors nicht mit der Maus verändern.
function selectOnFocus(input) {
input.each(function (index, elem) {
var jelem = $(elem);
var ignoreNextMouseUp = false;
jelem.mousedown(function () {
if (document.activeElement !== elem) {
ignoreNextMouseUp = true;
}
});
jelem.mouseup(function (ev) {
if (ignoreNextMouseUp) {
ev.preventDefault();
ignoreNextMouseUp = false;
}
});
jelem.focus(function () {
jelem.select();
});
});
}
selectOnFocus($("#myInputElement"));
Der Code verhindert bedingt, dass die mouseup
Standardverhalten, wenn das Feld derzeit keinen Fokus hat. Es funktioniert in diesen Fällen:
- Klicken, wenn das Feld nicht fokussiert ist
- Klicken, wenn das Feld den Fokus hat
- Tabulator in das Feld
Ich habe dies in Chrome 31, FF 26 und IE 11 getestet.