Как установить курсор на поле ввода в Javascript?
document.getElementById(frmObj.id).value="";
document.getElementById(frmObj.id).autofocus;
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";
В приведенном выше коде значение объекта формы отлично устанавливается на ""
, но курсор в текстовом поле отсутствует. Я хочу, чтобы курсор был там. focus()
фокусирует только это поле ввода, но на самом деле не устанавливает курсор.
Ответы
Ответ 1
В JavaScript сначала сосредоточьтесь на элементе управления, а затем выберите элемент управления для отображения курсора на texbox...
document.getElementById(frmObj.id).focus();
document.getElementById(frmObj.id).select();
или с помощью jQuery
$("#textboxID").focus();
Ответ 2
Я понимаю, что это довольно старый вопрос, но у меня есть "глупое" решение аналогичной проблемы, которая может помочь кому-то.
У меня возникла такая же проблема с текстовым полем, которое было отображено как выбранное (методом Focus в JQuery), но не взяло курсор.
Дело в том, что я открыл окно Debugger, чтобы увидеть, что происходит, и это окно украло фокус. Решение банально просто: просто закройте отладчик, и все в порядке... 1 час, потраченный на тестирование!
Ответ 3
Иногда вы получаете фокус, но не курсор в текстовом поле. В этом случае вы сделаете следующее:
document.getElementById(frmObj.id).select();
Ответ 4
Одна из вещей, которые могут вас укусить, - это использовать .onmousedown
как пользовательское взаимодействие; когда вы это делаете, а затем сразу же делается попытка выбрать поле, это не произойдет, потому что мышь удерживается на чем-то другом. Итак, измените на .onmouseup
и viola, теперь focus()
работает, потому что мышь находится в состоянии un-clicked, когда делается попытка изменить фокус.
Ответ 5
Вы не предоставили достаточно кода, чтобы помочь
Вероятно, вы отправите форму и перезагрузите страницу ИЛИ у вас есть объект на странице, например встроенный PDF, который украл фокус.
Вот канонический простой javascript метод проверки формы
Его можно улучшить с помощью onubtrusive JS, который удалит встроенный script, но это отправная точка DEMO
function validate(formObj) {
document.getElementById("errorMsg").innerHTML = "";
var quantity = formObj.quantity;
if (isNaN(quantity)) {
quantity.value="";
quantity.focus();
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";
return false;
}
return true; // allow submit
}
Вот HTML
<form onsubmit="return validate(this)">
<input type="text" name="quantity" value="" />
<input type="submit" />
</form>
<span id="errorMsg"></span>
Ответ 6
Этот способ устанавливает фокус и курсор в конец ввода:
div.getElementsByTagName("input")[0].focus();
div.getElementsByTagName("input")[0].setSelectionRange(div.getElementsByTagName("input")[0].value.length,div.getElementsByTagName("input")[0].value.length,"forward");