Як подати форму при зміні випадаючого списку?


293

Я створюю сторінку в JSP, де у мене є випадаючий список, і як тільки користувач вибирає значення, він повинен натиснути кнопку "go", а потім значення відправляється в сервлет.

            </select>
            <input type="submit" name="GO" value="Go"/>

Як зробити так, щоб він міг змінюватись? Наприклад, коли користувач вибирає Джона, всі його дані отримуються з БД і відображаються. Я хочу, щоб система це зробила без необхідності натискати кнопку "Go".

Відповіді:


662

Просто попросіть допомоги JavaScript.

<select onchange="this.form.submit()">
    ...
</select>

Дивитися також:


6
Чимало користувачів блокують javascript, чи є спосіб це зробити без javascript?
deweydb

5
@deweydb: Ні. Я б інакше відповів на це :) Просто покажіть <noscript>банер, що досвід роботи сайту краще, якщо JS увімкнено. Зовсім інша альтернатива - використовувати <ul><li><input type="submit">та завантажувати набір CSS, щоб він виглядав як справжній випадаючий список. Але тоді вже немає засобів <select>.
BalusC

89
@deweydb "Багато користувачів блокують javascript ..." Цитування? Я чесно ніколи не натрапляю на користувача, який блокує javascript - я почав вірити, що ці користувачі - міф. Це б заважало їм використовувати половину Інтернету, з одного боку; і хто достатньо кмітливий, щоб заблокувати скрипт, напевно знає, наскільки він нешкідливий і всюдисущий.
Натан Хорнбі

7
@BalusC, будь ласка, додайте це людям, які турбуються про те, що користувачі не мають JavaScript <noscript>This form requires that you have javascript enabled to work properly please enable javascript in your browser.</noscript> також @NathanHornby, якщо ви дійсно хочете цитати, чому ви не ходите в публічну бібліотеку з більшості блоку Javascript для публічної бібліотеки з міркувань безпеки, а також у деяких школах, так що не ' не намагайтеся передати це міфом, який він є, і це робиться в основному з міркувань безпеки, щоб зберегти цілісність комп’ютерів, оскільки деякі JavaScript - це шкідливий код ...
Belldandu

10
@deweydb Це просто. Просто покладіть submitкнопку в <noscript>теги. Він відображатиметься лише в тому випадку, якщо користувачі використовують noscript. Користувачі, у яких включений JS, можуть просто вибрати елемент, а користувачі з noscript просто натискають кнопку подання. :)
Аарон Ісав

81

Простий JavaScript зробить -

<form action="myservlet.do" method="POST">
    <select name="myselect" id="myselect" onchange="this.form.submit()">
        <option value="1">One</option>
        <option value="2">Two</option>
        <option value="3">Three</option>
        <option value="4">Four</option>
    </select>
</form>

Ось посилання на хороший підручник з javascript .


Дякую !, Вище один працює для MVC занадто @using (Html.BeginForm ("Actioname", "ім'я контролера", FormMethod.Post)) <select name = "myselect" id = "myselect" onchange = "this.form.submit () "> <value value =" 1 "> Один </option> <value value =" 2 "> Two </option> <value value =" 3 "> Three </option> <value value =" 4 " > Чотири </option> </select>
charulatha krishnamoorthy

11

крім використання this.form.submit()ви також надсилаєте ідентифікатор або ім’я. Наприклад, у мене така форма:<form action="" name="PostName" id="IdName">

  1. По імені: <select onchange="PostName.submit()">

  2. За Id: <select onchange="IdName.submit()">


JavaScript не потрібен!
MikeyE

я думаю, що "submit ()" - це HTML-елемент. не JavaScript. CMIIW
sate wedos

Я знаю, це я мав на увазі під своїм коментарем. Я намагався дати вам кілька реквізитів. :-)
MikeyE

Зачекайте, це серйозно не JavaScript?
Джеймс Хауг

10
Все, що написано всередині атрибутів *, інтерпретується як Javascript. Отже PostName.submit () - це JavaScript.
Асиф Шахзад

9

Тим у відповіді вище. Це безумовно JavaScript. Це просто inline.

BTW еквівалент jQuery, якщо ви хочете застосувати до всіх виділених елементів:

$('form select').on('change', function(){
    $(this).closest('form').submit();
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.