Как поместить курсор в конец текста в поле ввода после отправки формы с помощью html и javascript?
Я создал форму ввода текста в html
, которая отправляет введенные пользователем слова через метод POST
в файл Django views.py
. Вот код для этой формы
<form method="POST" action="search">
{% csrf_token %}
<input type="search" name="search" value="{{form.search.value}}" placeholder="Search here..." autofocus x-webkit-speech/>
</form>
Атрибут value
принимает значение, возвращаемое Django
после отправки. Вот код моего файла Django views.py
:
from django.shortcuts import render
import requests
from bs4 import BeautifulSoup as bs
from search.models import MyForm
def index(request):
return render(request, 'index.html')
def search(request):
if request.method == 'POST':
search = request.POST['search']
form = MyForm(request.POST)
max_pages_to_scrap = 15
final_result = []
for page_num in range(1, max_pages_to_scrap+1):
url = "https://www.ask.com/web?q=" + search + "&qo=pagination&page=" + str(page_num)
res = requests.get(url)
soup = bs(res.text, 'lxml')
result_listings = soup.find_all('div', {'class': 'PartialSearchResults-item'})
for result in result_listings:
result_title = result.find(class_='PartialSearchResults-item-title').text
result_url = result.find('a').get('href')
result_desc = result.find(class_='PartialSearchResults-item-abstract').text
final_result.append((result_title, result_url, result_desc))
context = {'final_result': final_result, 'form':form}
return render(request, 'index.html', context)
else:
return render(request, 'index.html')
Когда я отправляю форму, значение поля ввода сохраняется, но курсор переходит из конечной позиции в начальную. Чтобы решить эту проблему, я вставил скрипт javascript
, созданный в этой статье, в мой index.html
файл, который содержит мою форму:
<script>
/* Creating a function called PosEnd
in JavaScript to place the cursor
at the end */
function PosEnd(end) {
var len = end.value.length;
// Mostly for Web Browsers
if (end.setSelectionRange) {
end.focus();
end.setSelectionRange(len, len);
} else if (end.createTextRange) {
var t = end.createTextRange();
t.collapse(true);
t.moveEnd('character', len);
t.moveStart('character', len);
t.select();
}
}
</script>
и я изменил форму следующим образом:
<input type="search" name="search" value="{{form.search.value}}" placeholder="Search here..." autofocus x-webkit-speech/>
стал:
<input type="search" name="search" PosEnd(value="{{form.search.value}}") placeholder="Search here..." autofocus x-webkit-speech/>
но теперь, когда я отправляю форму, значения ввода теряются.