如何分离php生成的按钮

时间:2012-11-21 13:39:58

标签: php javascript jquery html css

我正在使用php生成按钮表

echo ' <td">
<form action="test.php" method="POST">
<input type="hidden" id="node" name="node" value="'.$fnode->{'name'}.'">
<input type="hidden" id="service" name="service" value="'.$flavor.'">
<input type="hidden" id="running" name="running" value="false">
<input type="submit" value="OFF" class="button">
</form>
</td>';

我想发送值而不通过jquery ajax重新加载,我正在使用此代码:

$(“。button”)。click(function(){     $( '错误')隐藏();

    var dataString = 'node='+ document.getElementById('node').value + '&service=' + document.getElementById('service').value + '&running=' + document.getElementById('running').value;

    $.ajax({
        type: "POST",
        url: "test.php",
        data: dataString,
        success: function() {
            alert ("Success");
        }
    });
    return false;
});

代码到目前为止工作 - 它总是从第一个表单发送数据。区分所有按钮的最佳方法是什么。我可以在表单中使用一个计数器,但我怎么能写出js“ifs”。 有没有更优雅的方式来做到这一点。表格数量是动态的。

3 个答案:

答案 0 :(得分:1)

您可以轻松地抓取单击按钮的父窗体,但您也可能希望在窗体上有其他ID的唯一ID。您还需要删除输入上的ID或使其唯一。

echo ' <td">
<form action="test.php" method="POST" id="form_node_' . $fnode->{'name'} . '>
<input type="hidden" name="node" value="'.$fnode->{'name'}.'">
<input type="hidden" name="service" value="'.$flavor.'">
<input type="hidden" name="running" value="false">
<input type="submit" value="OFF" class="button">
</form>
</td>';


$(".button").click(function(e) {
    e.preventDefault(); 
    $('.error').hide();
    var $form = $(this).closest('form'), // the closest parent form
        dataString = $form.closest('form').serialize(); // serialize the values instead of manually encoding
    $.ajax({
        type: "POST",
        url: "test.php",
        data: dataString,
        success: function() {
            alert ("Success submitting form ID " + $form.attr('id'));
            // you can now modify the form you submitted
        }
    });
    return false;
});

答案 1 :(得分:0)

最好的方法是为表单元素使用唯一ID。另一种方法是将类设置为具有相同名称的多个元素。

但是,以下方法更为可取:

$("form").on("submit", function() {
    $.ajax({
        type: "POST",
        url: "test.php",
        data: $(this).serialize(),
        success: function() {
            alert ("Success");
        }
    });
    return false;
});

(但无论如何不要忘记从表单元素中删除重复的id属性。)

答案 2 :(得分:0)

您可以为每个提交按钮指定一个ID:

<input id="button-1" type="submit" value="OFF" class="button">

然后点击特定按钮触发事件:

$("#button-1").click(function() { ... });