Функция автофокуса после перезагрузки на разных полях

Например, у меня есть форма: Country1 - State1 - City1 - (все три выпадающие)

Это 3 разных поля с уникальным идентификатором, я могу добавить больше строк, и это даст мне Country2 - State2 - City2.

Если я выбираю страну, я перезагружаю страницу, чтобы загрузить список штатов в раскрывающемся списке state1 (или state2) и т. д. (сделано с помощью jquery). Теперь я хочу, чтобы всякий раз, когда я выбираю страну 1 или 2, после перезагрузки страницы она фокусировалась на состоянии 1 или 2 или, по крайней мере, на стране 1 или 2 соответственно.

Я не знаю, возможно это или нет.. но мне это нужно :(


person Anusha    schedule 24.09.2012    source источник
comment
Вы перезагружаете страницу или используете AJAX для загрузки частей страницы?   -  person tdlm    schedule 24.09.2012
comment
Вам нужно будет сохранить значения выбранного раскрывающегося списка, используя локальное хранилище или файл cookie/сеанс и т. д., или, в качестве альтернативы, вы можете предотвратить перезагрузку страницы и обрабатывать дальнейшие задачи с помощью ajax.   -  person Vishal    schedule 24.09.2012
comment
Вы можете сохранить идентификатор страны или идентификатор штата в скрытом поле, а в javascript проверить идентификатор в скрытом поле и сфокусировать свой контроль.   -  person Yograj Gupta    schedule 24.09.2012
comment
@tdlm Я перезагружаю страницу с помощью JQuery   -  person Anusha    schedule 24.09.2012
comment
Я не мог отследить, что ты предлагаешь Вишалу.. @YograjGupta: я попробую твою идею   -  person Anusha    schedule 24.09.2012
comment
Ах! не мог сопротивляться. Но как вы собираетесь сохранить значения в скрытом поле при перезагрузке страницы? В любом случае это невозможно, если вы не используете сеанс или локальное хранилище;) или не используете ajax!!   -  person Vishal    schedule 24.09.2012
comment
как-то так и не нашел решения...   -  person Anusha    schedule 24.09.2012


Ответы (1)


Я бы посоветовал вам перезагрузить части страницы с помощью AJAX. Перезагрузка всей страницы тратит ресурсы как на стороне сервера, так и на стороне клиента. Когда вы уже загрузили DOM, имеет смысл обновлять только те части, которые вы хотите получить с сервера.

Используя jQuery, вы можете создать что-то вроде:

$.ajax({
    url: 'http://somedomain.tld/your_script_url',
    data: {
        country:$('#country_input').val(),
    },
    dataType:'json',
    type:'POST'
});

URL-адрес должен возвращать либо текст, либо HTML, либо JSON. Вы должны изменить значение для dataType в зависимости от того, что вы возвращаете.

Кроме того, type должно быть либо GET, либо POST.

Вы можете использовать $("#your_id").focus();, чтобы сфокусироваться на элементе.

Это не только избавит вас от большого объема обработки на стороне сервера, но и поможет вам написать общую функцию для выполнения этой задачи для каждого выбранного элемента на странице.

person automaticAllDramatic    schedule 24.09.2012
comment
Вы можете использовать $(#your_id).focus(); для фокусировки на элементе. - person automaticAllDramatic; 24.09.2012