Açılır listenin değiştirilmesi ile ilgili form nasıl gönderilir?


293

JSP'de bir açılır listeye sahip olduğum bir sayfa oluşturuyorum ve kullanıcı bir değer seçtikten sonra git düğmesine tıklaması gerekiyor ve sonra değer Servlet'e gönderiliyor.

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

Değişime neden olacak şekilde nasıl yapabilirim? Örneğin, kullanıcı John'u seçtiğinde tüm ayrıntıları DB'den alınır ve görüntülenir. Sistemin git düğmesine tıklamak zorunda kalmadan yapmasını istiyorum.

Yanıtlar:


662

Sadece JavaScript'ten yardım isteyin.

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

Ayrıca bakınız:


6
Birçok kullanıcı javascript'i engeller, bunu javascript olmadan yapmanın bir yolu var mı?
deweydb

5
@deweydb: Hayır. Aksi takdirde ben cevap olurdu :) Sadece <noscript>JS etkinse sitenin deneyim daha iyi olduğunu bir afiş göstermek . Tamamen farklı bir alternatif, <ul><li><input type="submit">gerçek bir açılır liste gibi görünmesi için bir sürü CSS kullanmak ve atmaktır. Ama sonra <select>artık bir yolu yok.
BalusC

89
@deweydb "Birçok kullanıcı javascript'i engelliyor…" Alıntı? Dürüst olmak gerekirse asla javascript'i engelleyen bir kullanıcıyla karşılaşmadım - bu kullanıcıların bir efsane olduğuna inanmaya başladım. Bir kere internetin yarısını kullanmalarını engelleyecekti; ve senaryoyu engelleyecek kadar bilgili olan herkes muhtemelen ne kadar zararsız ve her yerde olduğunun farkındadır.
Nathan Hornby

7
@BalusC, javascript'i etkinleştirmemiş kullanıcılar için endişe duyan insanlar için de bunu ekleyin <noscript>This form requires that you have javascript enabled to work properly please enable javascript in your browser.</noscript> @NathanHornby gerçekten bir alıntı istiyorsanız neden bir halk kütüphanesine gitmiyorsunuz, çoğu halk kütüphanesinin güvenlik nedenleriyle blok javascriptini ve bazı okulları da bu yüzden yapmayın ' t Bazı javascript kötü amaçlı kod olduğu için esas olarak bilgisayarların bütünlüğünü korumak için güvenlik nedenleriyle yapılmış ve bir efsane olarak geçmeye çalışın ...
Belldandu

10
@deweydb Çok basit. Sadece etiketlere bir submitdüğme koy <noscript>. Yalnızca kullanıcılar noscript kullanıyorsa gösterilir. JS'yi etkinleştiren kullanıcılar öğeyi kolayca seçebilir ve noscript'i olan kullanıcılar gönder düğmesini tıklar. :)
Aaron Esau

81

Basit JavaScript yapacak -

<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>

İyi bir javascript eğitimi için bir link .


Teşekkürler !, Yukarıda MVC için de çalışılıyor @ Html.BeginForm ("Actioname", "controllername", FormMethod.Post)) <select name = "myselect" id = "myselect" onchange = "this.form.submit () "> <seçenek değeri =" 1 "> Bir </option> <seçenek değeri =" 2 "> İki </option> <seçenek değeri =" 3 "> Üç </option> <seçenek değeri =" 4 " > Dört </option> </select>
charulatha krishnamoorthy

11

this.form.submit()kimliğinizi veya adınızı kullanarak göndermekten başka . örnek ben böyle bir form var:<form action="" name="PostName" id="IdName">

  1. İsimle : <select onchange="PostName.submit()">

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


JavaScript gerekmez!
MikeyE

Ben 'gönder ()' HTML Element olduğunu düşünüyorum. javascript değil. CMIIW
sate wedos

Biliyorum, yorumumla kastettiğim bu. Sana bazı aksesuarlar vermeye çalışıyordum. :-)
MikeyE

Bekle, bu ciddi bir JavaScript değil mi?
James Haug

10
İçinde * özniteliklerin üzerine yazılanlar Javascript olarak yorumlanır. PostName.submit () javascripttir.
Asif Shahzad

9

Yukarıdaki cevapta olanlar için. Kesinlikle JavaScript. Sadece satır içi.

BT Tüm seçimlere uygulamak istiyorsanız jQuery eşdeğeri:

$('form select').on('change', function(){
    $(this).closest('form').submit();
});
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.