วิธีการส่งแบบฟอร์มเกี่ยวกับการเปลี่ยนรายการแบบเลื่อนลง


293

ฉันกำลังสร้างหน้าใน JSP ที่ฉันมีรายการแบบเลื่อนลงและเมื่อผู้ใช้เลือกค่าที่เขาต้องคลิกที่ปุ่มไปแล้วค่าจะถูกส่งไปยัง Servlet

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

ฉันจะทำให้มันเปลี่ยนได้อย่างไร? เช่นเมื่อผู้ใช้เลือก John รายละเอียดทั้งหมดของเขาจะถูกดึงออกมาจากฐานข้อมูลและแสดง ฉันต้องการให้ระบบทำโดยไม่ต้องคลิกปุ่มไป

คำตอบ:


662

เพียงแค่ขอความช่วยเหลือจาก JavaScript

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

ดูสิ่งนี้ด้วย:


6
ผู้ใช้จำนวนมากบล็อกจาวาสคริปต์มีวิธีทำโดยไม่ใช้จาวาสคริปต์หรือไม่?
deweydb

5
@deweydb: ไม่ ฉันจะตอบเป็นอย่างอื่น :) เพียงแสดง<noscript>แบนเนอร์ว่าประสบการณ์ของเว็บไซต์จะดีกว่าหากเปิดใช้งาน JS ทางเลือกที่แตกต่างอย่างสิ้นเชิงคือการใช้<ul><li><input type="submit">และส่ง CSS โหลดเพื่อให้ดูเหมือนรายการดรอปดาวน์จริง แต่ไม่มีวิธีการ<select>อีกต่อไปแล้ว
BalusC

89
@deweydb "ผู้ใช้จำนวนมากบล็อกจาวาสคริปต์ ... " การอ้างอิง? ฉันสุจริตไม่เคยเจอผู้ใช้ที่บล็อกจาวาสคริปต์ - ฉันเริ่มเชื่อว่าผู้ใช้เหล่านี้เป็นตำนาน มันจะป้องกันพวกเขาจากการใช้ครึ่งหนึ่งของอินเทอร์เน็ตสำหรับสิ่งหนึ่ง; และใครก็ตามที่เข้าใจพอที่จะบล็อกสคริปท์ก็คงทราบดีว่ามันไร้เดียงสาและแพร่หลายมากแค่ไหน
Nathan Hornby

7
@BalusC โปรดเพิ่มสิ่งนี้สำหรับผู้ที่มีความกังวลเกี่ยวกับผู้ใช้ที่ไม่ได้เปิดใช้งานจาวาสคริปต์ <noscript>This form requires that you have javascript enabled to work properly please enable javascript in your browser.</noscript> เช่นกัน @NathanHornby หากคุณต้องการการอ้างอิงจริง ๆ ทำไมคุณไม่ไปห้องสมุดสาธารณะจาวาสคริปต์บล็อกห้องสมุดสาธารณะส่วนใหญ่ด้วยเหตุผลด้านความปลอดภัย ไม่พยายามที่จะส่งผ่านตามตำนานที่มีอยู่และกำลังดำเนินการส่วนใหญ่ด้วยเหตุผลด้านความปลอดภัยเพื่อรักษาความสมบูรณ์ของคอมพิวเตอร์เนื่องจากจาวาสคริปต์บางตัวเป็นรหัสที่เป็นอันตราย ...
Belldandu

10
@deweydb มันง่าย เพียงแค่ใส่submitปุ่มใน<noscript>แท็ก มันจะแสดงเฉพาะถ้าผู้ใช้ใช้ noscript ผู้ใช้ที่เปิดใช้งาน JS สามารถเลือกองค์ประกอบอย่างง่ายและผู้ใช้ที่มี noscript จะคลิกปุ่มส่ง :)
Aaron Esau

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>

นี่คือการเชื่อมโยงที่ดีจาวาสคริปต์กวดวิชา


ขอขอบคุณ! เหนือสิ่งใดสิ่งหนึ่งก็ใช้ได้กับ MVC ด้วย @using (Html.BeginForm ("Actioname", "controllername", FormMethod.Post)) <select name = "myselect" id = "myselect" onchange = "this.form.submit () "> <option value =" 1 "> หนึ่ง </option> <option value =" 2 "> สอง </option> <option value =" 3 "> สาม </option> <option value =" 4 " > สี่ </option> </select>
charulatha krishnamoorthy

11

นอกเหนือจากการใช้this.form.submit()คุณส่งด้วย ID หรือชื่อ ตัวอย่างฉันมีรูปแบบเช่นนี้:<form action="" name="PostName" id="IdName">

  1. โดยชื่อ : <select onchange="PostName.submit()">

  2. โดย Id: <select onchange="IdName.submit()">


ไม่จำเป็นต้องใช้ JavaScript!
MikeyE

ฉันคิดว่า 'ส่ง ()' เป็นองค์ประกอบ HTML ไม่ใช่จาวาสคริปต์ CMIIW
sate wedos

ฉันรู้ว่านั่นคือสิ่งที่ฉันหมายถึงโดยความคิดเห็นของฉัน ฉันพยายามที่จะให้อุปกรณ์บางอย่างแก่คุณ :-)
MikeyE

เดี๋ยวก่อนนั่นไม่ใช่จาวาสคริปต์จริงๆหรือ?
James Haug

10
สิ่งที่เขียนไว้ข้างในคุณลักษณะ * ถูกตีความว่าเป็น Javascript ดังนั้น PostName.submit () คือ javascript
ราวกับ Shahzad

9

เพื่อผู้ที่อยู่ในคำตอบข้างต้น มันเป็นจาวาสคริปต์อย่างแน่นอน มันเป็นแบบอินไลน์

BTW เทียบเท่า jQuery หากคุณต้องการใช้กับการเลือกทั้งหมด:

$('form select').on('change', function(){
    $(this).closest('form').submit();
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.