javascript - lost - onblur html5
Campo de entrada de foco con JQuery sin seleccionar el texto de valor actual (7)
¿Has probado esto?
var txt = $("#myinputfield").val();
$("#myinputfield").focus();
$("#myinputfield").val( txt );
$("#myinputfield").focus();
Hacer eso en un campo de entrada con su valor ya establecido hace que se seleccione el valor actual. ¿Cómo puedo enfocar el campo sin seleccionar el texto?
¿Qué tal algo así como establecer el valor del campo de entrada a sí mismo después de enfocarlo?
$("#myinputfield").focus().val($("#myinputfield").val());
Esta solución funciona muy bien para mí:
$("#myinputfield").focus(function (event) {
var value = $("#myinputfield").val();
setTimeout(function() {
$("#myinputfield").val(value);
},10);
});
He buscado un poco y descubrí que deberías volver a establecer tu valor en el campo deseado después de enfocarlo.
Otras respuestas sugieren establecer el valor del campo de entrada a sí mismo después de enfocarlo. Si en Firefox, el cursor aparece al comienzo de la entrada y la quiere al final, entonces se requiere una pequeña modificación. Primero deberá establecer el valor como vacío y luego establecerlo en el valor anterior.
var value = $("#myinputfield").val();
$("#myinputfield").focus().val('''').val(value);
$(document).ready(function() {
var $field = $("#formloginusername"),
oldVal = $field.val();
$field.focus().val('''').val(oldVal);
});
DEMO: http://jsfiddle.net/X7Y8S/
Tomé el código y la demostración de la respuesta de ahren en otro tema, creo que es útil.
function focusField(id){
var inputField = document.getElementById(id);
if (inputField != null && inputField.value.length != 0){
if (inputField.createTextRange){
var FieldRange = inputField.createTextRange();
FieldRange.moveStart(''character'',inputField.value.length);
FieldRange.collapse();
FieldRange.select();
}else if (inputField.selectionStart || inputField.selectionStart == ''0'') {
var elemLen = inputField.value.length;
inputField.selectionStart = elemLen;
inputField.selectionEnd = elemLen;
inputField.focus();
}
}else{
inputField.focus();
}
}