Перейдите на новую страницу на основе выбора из выпадающего списка без использования JavaScript - PullRequest
0 голосов
/ 03 мая 2011

Я пытаюсь удалить JavaScript из моего JSP. В настоящее время я использую что-то вроде этого для пересылки на нужную мне страницу в зависимости от выбора в раскрывающемся списке.

function STFS() {
    var url = document.stform.typeOptions.options[document.stform.typeOptions.selectedIndex].value;
    if (url!=0) {
        window.location=url;
    }
}

Как я могу сделать то же самое, не используя JavaScript. Я попытался установить window.location в 'select onChange' следующим образом:

<select name="typeOptions" onChange="window.location=this.options[this.selectedIndex].value;">

Но когда я отправляю форму, она не переходит на ожидаемый URL. Я должен что-то упустить. Это среда портлетов, и URL-адрес относительно длинный. Любая помощь приветствуется. Спасибо

1 Ответ

1 голос
/ 03 мая 2011

Используйте onchange вместо onChange (это не реальная проблема, поскольку многие браузеры прощают это, но это совершенно неверно) и убедитесь, что вы запускаете код, который, по вашему мнению, вы запускаете (т. е. вы не используете старую версию или версию из кэша браузера) и что вы действительно меняете выпадающий элемент вместо простого нажатия кнопки отправки формы (onchange не запускается при отправке формы).


Обновление согласно комментарию

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

Измените его следующим образом:

<form action="redirect">
    <select name="url">
        ...
    </select>
    <input type="submit">
</form>

с классом RedirectServlet, который сопоставлен с шаблоном URL-адреса /redirect и выполняет в основном следующую работу в методе doGet():

response.sendRedirect(request.getParameter("url"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...