Làm thế nào để gửi biểu mẫu khi thay đổi danh sách thả xuống?


293

Tôi đang tạo một trang trong JSP nơi tôi có danh sách thả xuống và một khi người dùng chọn một giá trị, anh ta phải nhấp vào nút đi và sau đó giá trị được gửi đến Servlet.

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

Làm thế nào để tôi thực hiện nó để nó thay đổi? Ví dụ: khi người dùng chọn John, tất cả các chi tiết của anh ta được lấy lại từ DB và được hiển thị. Tôi muốn hệ thống làm điều đó mà không cần phải nhấp vào nút đi.

Câu trả lời:


662

Chỉ cần yêu cầu trợ giúp của JavaScript.

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

Xem thêm:


6
Rất nhiều người dùng chặn javascript, có cách nào để làm điều này mà không cần javascript không?
deweydb

5
@deweydb: Không. Tôi có thể đã trả lời nó :) Chỉ cần hiển thị một <noscript>biểu ngữ rằng trải nghiệm của trang web sẽ tốt hơn nếu bật JS. Một cách khác hoàn toàn khác là sử dụng <ul><li><input type="submit">và tải một lượng CSS để làm cho nó trông giống như một danh sách thả xuống thực sự. Nhưng sau đó không còn phương tiện nào <select>nữa.
BalusC

89
@deweydb "Rất nhiều người dùng chặn javascript" trích dẫn? Thành thật tôi chưa bao giờ bắt gặp một người dùng chặn javascript - Tôi đã bắt đầu tin rằng những người dùng này là một huyền thoại. Nó sẽ ngăn họ sử dụng một nửa internet, vì một điều; và bất cứ ai đủ hiểu biết để chặn kịch bản có thể nhận thức được nó vô hại và phổ biến như thế nào.
Nathan Hornby

7
@BalusC vui lòng thêm phần này cho những người lo lắng về việc người dùng không bật javascript <noscript>This form requires that you have javascript enabled to work properly please enable javascript in your browser.</noscript> @NathanHornby nếu bạn thực sự muốn trích dẫn lý do tại sao bạn không đến thư viện công cộng hầu hết thư viện công cộng chặn javascript vì lý do bảo mật cũng như một số trường quá. Tôi cố gắng vượt qua nó như một huyền thoại và nó được thực hiện chủ yếu vì lý do bảo mật để giữ tính toàn vẹn của máy tính vì một số javascript là mã độc ...
Belldandu

10
@deweydb Thật đơn giản. Chỉ cần đặt một submitnút trong <noscript>thẻ. Nó sẽ chỉ hiển thị nếu người dùng sử dụng noscript. Người dùng đã bật JS có thể đơn giản chọn thành phần và người dùng có noscript sẽ chỉ cần nhấp vào nút gửi. :)
Aaron Esau

81

JavaScript đơn giản sẽ làm -

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

Đây là một liên kết cho một hướng dẫn javascript tốt .


Cảm ơn!, Trên đây cũng được làm việc cho MVC )) " > Bốn </ tùy chọn> </ select>
charulatha krishnamoorthy

11

ngoài việc sử dụng this.form.submit()bạn cũng gửi theo id hoặc tên. ví dụ tôi có dạng như thế này:<form action="" name="PostName" id="IdName">

  1. Bằng tên : <select onchange="PostName.submit()">

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


Không cần JavaScript!
MikeyE

tôi nghĩ rằng 'submit ()' là Phần tử HTML. không phải javascript. CMIIW
sate wate

Tôi biết, đó là những gì tôi muốn nói bởi nhận xét của tôi. Tôi đã cố gắng để cung cấp cho bạn một số đạo cụ. :-)
MikeyE

Đợi đã, có nghiêm túc không JavaScript?
James Haug

10
Bất cứ điều gì được viết bên trong các thuộc tính * đều được hiểu là Javascript. Vì vậy, PostName.submit () là javascript.
Asif Shahzad

9

Để những người trong câu trả lời ở trên. Đó chắc chắn là JavaScript. Nó chỉ là nội tuyến.

BTW tương đương với jQuery nếu bạn muốn áp dụng cho tất cả các lựa chọn:

$('form select').on('change', function(){
    $(this).closest('form').submit();
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.