Подтвердить что ты не робот

Как установить курсор на поле ввода в Javascript?

document.getElementById(frmObj.id).value="";
document.getElementById(frmObj.id).autofocus;
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";

В приведенном выше коде значение объекта формы отлично устанавливается на "", но курсор в текстовом поле отсутствует. Я хочу, чтобы курсор был там. focus() фокусирует только это поле ввода, но на самом деле не устанавливает курсор.

4b9b3361

Ответ 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");