如何使用JQuery处理表单中的多个提交按钮?

时间:2011-04-05 18:43:14

标签: javascript jquery forms

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

例如,假设动作脚本是process.php,如果按下按钮3,那么我需要从process.php?btn = 3中提取数据,如果按下按钮27,那么我需要提取数据form process.php?btn = 27。

使用JQuery执行此操作的最简单,最直接的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

假设您为所有链接提供了课程.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>
...

这似乎是最好在服务器端完成的事情类型,就像让服务器使用正确的param值呈现每个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

答案 1 :(得分: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/