【问题标题】:How to handle several submit buttons in a form with JQuery?如何使用 JQuery 处理表单中的多个提交按钮?
【发布时间】:2011-04-05 18:43:13
【问题描述】:

我需要创建 30 个按钮,从 1 到 30,每个按钮都调用完全相同的动作脚本(例如,都在同一个表单下),其中传递给动作脚本的参数只是按下的按钮的编号(1 到 30)。

例如,假设action脚本是process.php,如果按下按钮3,那么我需要从process.php?btn=3拉取数据,如果按下按钮27,那么我需要拉取数据形成 process.php?btn=27.

使用 JQuery 最简单、最直接的方法是什么?

谢谢!

【问题讨论】:

    标签: javascript jquery forms


    【解决方案1】:

    这样的事情应该可以做到。 beforeSend 函数只是向您显示正在发送到服务器的内容。

    $('button').click(function (e) {
        e.preventDefault();
        var number = $('form button').index(this);
        $.ajax('process.php', {
            data: 'number='+ number,
            beforeSend: function (jqHxR, settings) {
                alert(settings.data);
                return false;
            }
        });  
    });
    

    编辑: http://jsfiddle.net/EvilAmarant7x/NhMnP/

    【讨论】:

    • 您能否给我一个代码示例,我将用于单个提交按钮以使其与您上面编写的代码一起使用?谢谢。
    • @NeedExpertHelp 我已经更新了我的回复。如果您需要更多详细信息,请告诉我。
    【解决方案2】:

    假设您将所有链接都提供给 .number 类:

    $("a.number").click(function(e) {
        e.preventDefault();
        window.location.href = 'process.php?btn=' + $(this).text();
    });
    
    <a class="number" href="#">1</a>
    <a class="number" href="#">2</a>
    ...
    

    这似乎是最好在服务器端完成的类型,例如让服务器使用正确的参数值渲染每个href。我假设这不是你的选择。

    编辑:按要求异步:

    $("a.number").click(function(e) {
        e.preventDefault();
    
        // fill up div with ID="results" with content from server
        $("#results").load("process.php", { btn: $(this).text() }, function() {
    
            // callback to do something once the content has loaded
            // (perhaps not needed)
    
        });
    });
    
    <div id="results"></div>
    ...
    <a class="number" href="#">1</a>
    <a class="number" href="#">2</a>
    ...
    

    请参阅 $.load$.ajax

    【讨论】:

    • 您提到,“如果您有 30 个提交按钮,您可以将每个数字分配为它们的值”,这实际上是我最初的问题试图解决的问题,我该怎么做?另外,通过链接而不是通过提交按钮这样做有什么好处?再次感谢。
    • @NeedExpertHelp - 放弃我在上一条评论中所说的内容 - 您最终会将所有按钮的名称和值附加到查询字符串中。最简单的方法是让您的链接形成如下:&lt;a href="process.php?btn=1"&gt;1&lt;/a&gt; &lt;a href="process.php?btn=2"&gt;2&lt;/a&gt; 等等。不需要表格。
    • @karim79 - 这不会加载新页面而不是异步请求数据吗?
    • 嘿,我以为这就是你想要的!在您的 Q 中任何地方都没有提到异步或 ajax。我会编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2021-08-11
    • 2019-08-23
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多