У меня есть форма и textarea, я автоматически отправляю для формы через х секунд ... Но каждый раз, когда автоматически отправляется, курсор выпрыгивает из textarea ... , так как я могу сохранить курсор после отправки в старом положении в текреаре?Как я могу держать курсор в своем положении в textarea после автоматической отправки?
ответ
В вашем auto submit код получить текущую позицию курсора в textarea
. Вы можете сделать это с помощью этой функции (где id
является атрибутом идентификатор textarea
элемента):
function getCaretPosition(id) {
var txt = document.getElementById(id);
var startPos = txt.selectionStart;
var endPos = txt.selectionEnd;
return endPos;
}
Чем хранить значение где-то (в localstorage
, например), и после отправки формы восстановить положение курсора с эта функция:
function setCaretPosition(id) {
var txt = document.getElementById(id);
if(txt.createTextRange) {
var range = txt.createTextRange();
range.collapse(true);
range.moveEnd('character', caretPos);
range.moveStart('character', caretPos);
range.select();
return;
}
if(txt.selectionStart) {
txt.focus();
txt.setSelectionRange(caretPos, caretPos);
}
}
где caretPos позиция курсора сохраняется до представить. Вот простая демонстрация, чтобы увидеть, как работают функции https://jsfiddle.net/p0oc8tjs/2/
Используйте атрибут textarea autofocus. Пример:
<textarea autofocus></textarea>
Этот логический атрибут позволяет указать, что элемент формы должен иметь фокус ввода при загрузке страницы, если пользователь не отменяет его, , например, введя в другом элементе управления. Этот атрибут может содержать только один связанный с формой элемент .
Если вы все еще хотите использовать скрипт и установить последнюю позицию курсора, чем при использовании sessionStorage вы можете сделать:
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
};
$.fn.selectRange = function(start, end) {
if(end === undefined) {
end = start;
};
return this.each(function() {
if('selectionStart' in this) {
this.selectionStart = start;
this.selectionEnd = end;
} else if(this.setSelectionRange) {
this.setSelectionRange(start, end);
} else if(this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
var textarea = $('.remember-cursor');
textarea.on('input click keyup', function(e) {
\t sessionStorage.cursorPosition = textarea.getCursorPosition();
});
$(document).on('ready', function(e) {
textarea.focus().selectRange(sessionStorage.cursorPosition);
});
$('button').on('click', function(e) {
\t $(document).trigger('ready');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="remember-cursor">adsfsadfsad</textarea>
<button>Trigger DOM ready</button>
Благодаря этому сообщений и ответов:
Также на JSFiddle.
Все еще, я не думаю, это правильный способ сделать это. Вы должны отправлять свои данные через AJAX и собирать результаты.
он работает, но он помещается Курсор в начале textarea после отправки @skobaljic – code
Я хочу сохранить курсор в старой позиции после отправки не хочу ставить его в начало textarea – code
Лучшим способом было бы отправить ваши данные через AJAX и показать результаты. Вы будете хранить ресурсы, потому что нет необходимости отправлять что-либо, если данные не были изменены.Если вы все еще хотите сфокусировать текстовое поле и переместить курсор в конец текста (или в определенное место), то нет другого способа, кроме использования скрипта. – skobaljic
- 1. Как я могу сохранить UIImage в новом положении после анимации?
- 2. Как я могу перетащить div и держать курсор в том же месте, как я его нажал?
- 3. UIScrollView держать кнопки в фиксированном положении
- 4. Как я могу держать сессию в чистоте?
- 5. держать флажок установлен после отправки формы
- 6. Рекурсия: Обратная строка в своем положении
- 7. Сделайте элементы fancybox оставайтесь в своем положении
- 8. Поиск содержимого браузера после отправки автоматической формы
- 9. Как я могу очистить formBackingObject после отправки?
- 10. Как я могу очистить поля после отправки?
- 11. Как заставить TableSorter держать строку в фиксированном положении?
- 12. Как изменить мерцающий курсор/каретку в textarea
- 13. Textarea ScrollPane держать в тексте добавить
- 14. Курсор EditText в верхнем левом положении.
- 15. jQuery - курсор позиции ПОСЛЕ вставки текста в textarea
- 16. Как сохранить содержимое textarea после отправки формы с помощью jsp?
- 17. «курсор находится в конвертерном положении» ошибки
- 18. Как показать курсор textarea автоматически?
- 19. Как поместить курсор в определенную точку после отправки сценария AutoHotkey?
- 20. UITextView как держать курсор над клавиатурой
- 21. как я могу найти Word в том, что курсор находится
- 22. В додзё, Как получить данные из TextArea после отправки
- 23. держать фокус в том же поле ввода после отправки/ввода
- 24. Как я могу закрыть UIWebView после отправки формы в представлении?
- 25. Как я могу вернуть результат действия после отправки в redux?
- 26. держать tableViewCell в том же положении после того, как setEditing разрешен в ios
- 27. Как я могу держать hightlighted (javascript noob;)
- 28. Как держать мяч в рамках последовательной автоматической вертикальной обертки
- 29. Как я могу держать внутренние дивы, сосредоточенные на содержащую DIV при горизонтальном положении прокрутки
- 30. Howto Поместить курсор в начало textarea
, не видя кода, не так много можно сказать. Однако. вы можете попытаться сделать '.focus()' в текстовое поле после отправки. –
это работает, но я должен один щелчок мышью, чтобы писать ... когда я пишу без одного щелчка мышью, ничего не пишу, потому что курсор не отображается на текстовом поле без одного щелчка мышью @ telex-wap – code