jQuery获取单击按钮的表单?

时间:2014-06-30 08:44:13

标签: javascript jquery html

<form method="POST" action="" id ="formaclient" > 
  <input name="fullname">
  <input name="fullname1">
  <input name="fullname2">
  <input name="fullname3">
  <input class="btn-update">
</form>


$(".btn-update").click(function (ev) {
    ev.preventDefault();
    var data = $(this).find("#formaclient").serialize();
    console.log(data);
    $.ajax({
        type: 'POST',
        url: 'demo/client_view_search_content.php',
        data: $("#formaclient").serialize(),
        success: function () {
            alert('Success!')
        },
        error: function () {
            alert('Failure!')
        }
    });
    return false;
});

出了点问题
var data  = $(this).find("#formaclient").serialize();

我没有获取数据,如何更改var data = $(this).find("#formaclient").serialize();我将从表单中获取数据?

5 个答案:

答案 0 :(得分:1)

使用closest()代替find()。 find()将仅检查孩子。虽然closest()会检查父母

 var data  = $(this).closest("#formaclient").serialize(); 

由于id是唯一的,您可以直接获取这样的表单,

var data  = $("#formaclient").serialize();

如果您有多个表单,请像这样使用

 var data  = $(this).closest("form").serialize(); 

答案 1 :(得分:1)

我认为您使用.find()错误,因为.find()搜索元素后代(子)。

我认为您应该使用$("form#formaclient").serialize()来序列化数据。

答案 2 :(得分:1)

您正在使用指向 .btn-update 对象的 this 。使用.find()只会检查对象的子节点。使用下面的序列化数据:

var data = $("#formaclient").serialize();

答案 3 :(得分:1)

.find()从当前元素开始。显然,由于按钮中没有元素,您将无法找到该表单。

由于您拥有表单的id,为什么不用它来查找表单?

$('#formaclient').serialize();会做到这一点。

另外,请记住所有ID都必须是唯一的,因此您不必担心混合表单。

答案 4 :(得分:0)

您不需要具有特定id值的find元素 - 简单的$('#formaclient')就可以了。它还可以避免像目前代码尝试那样将表单数据序列化两次。

您的最终结果应如下所示:

$(".btn-update").click(function(ev) {
    ev.preventDefault();
    var myData  = $('#formaclient').serialize(); 
    console.log(myData);
    $.ajax({
        type: 'POST',
        url: 'demo/client_view_search_content.php',
        data: myData,
        success: function () {
            alert('Success!')
        },
        error: function () {
            alert('Failure!')
        }
    });
    return false;
});

正如其他人所指出的那样,尝试find一个元素只会搜索你开始的元素(你的情况下的按钮)中的后代元素。