如何在下拉列表更改时提交表格?


292

我正在JSP中创建一个页面,其中有一个下拉列表,一旦用户选择了一个值,他就必须单击go按钮,然后将该值发送到Servlet。

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

我该如何做才能在变更时做到呢?例如,当用户选择John时,将从数据库检索他的所有详细信息并显示。我希望系统无需单击“执行”按钮即可执行此操作。

Answers:


661

只需询问JavaScript的帮助。

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

也可以看看:


6
很多用户阻止了javascript,是否有没有javascript的方法?
deweydb 2013年

5
@deweydb:不。否则,我会回答它的:)仅显示一条<noscript>横幅,表明如果启用JS,网站的体验会更好。完全不同的替代方法是使用<ul><li><input type="submit">并添加CSS负载,使其看起来像一个真正的下拉列表。但是,那就没有办法<select>了。
BalusC 2013年

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> 代码,如果您真的想要引用,出于安全原因,为什么不去公共图书馆使用大多数公共图书馆的javascript脚本, 也不要去一些学校呢? t试图将它当作神话传播,并且主要是出于安全原因,以保持计算机的完整性,因为某些javascript是恶意代码...
Belldandu

9
@deweydb很简单。只需submit<noscript>标签中放置一个按钮即可。仅在用户使用noscript时显示。启用了JS的用户可以简单地选择元素,而没有脚本的用户只需单击提交按钮。:)
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>

这是一个好的javascript教程的链接。


谢谢!,上面的方法也适用于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

我认为'submit()'是HTML元素。不是javascript。CMIIW
sate wedos

我知道,这就是我的评论的意思。我想给你一些道具。:-)
MikeyE

等等,这不是JavaScript吗?
詹姆斯·豪格'18

10
在on *属性内编写的所有内容均被解释为Javascript。所以PostName.submit()是javascript。
阿西夫·沙扎德

9

对于以上答案中的那些。绝对是JavaScript。它只是内联。

顺便说一句,如果您想应用于所有选择,则相当于jQuery:

$('form select').on('change', function(){
    $(this).closest('form').submit();
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.