2014-11-24 132 views
1

一直在查看先前提问的问题,但找不到太多帮助。Jquery - 获取父元素的数据ID

我有以下html代码,通过数据id发送到下面的模式,当用户提交表单时,我已经创建了一个('#edit-form')。提交函数,需要通过先前发送提到的数据ID。

这里是我的代码

按钮打开模态>>

<button type="button" class="edit-group" title="Edit Group" data-id="<?php echo $group->id ?>" data-name="<?php echo $group->groupName ?>">Edit Group</button> 

表内模式:

<form class="form-horizontal" id="edit-template-form"> 
    <div class="modal-body"> 
     <div class="form-group"> 
      <label for="edit-group-name" class="col-sm-2 control-label">Group name</label> 
     <div class="col-sm-10"> 
      <input type="text" name="groupName" class="form-control" id="edit-template-name" placeholder="New Group Name"> 
     </div> 
    </div> 
    <input type="hidden" id="edit-template-id"> 
    </div> 
    <div class="modal-footer"> 
     <button type="button" class="md-close" data-dismiss="modal">Cancel</button> 
     <button type="submit" class="btn btn-primary btn-flat">Save Changes</button> 
    </div> 
</form> 

jQuery的

$('#edit-template-form').submit(function (e) { 
    e.preventDefault(); 
    var data = { 
     id: $(this).parent().val($(this).data('id')), 
     name: $('#edit-template-name').val() 
    }; 
    console.log(data); 
    return false; 
}); 
+0

如果您想要提交表单控件,它们必须有一个名称。一个ID是可选的(通常不需要)。 – RobG 2014-11-24 00:42:59

回答

1

this关键字是指数据对象本身不是#edit-template-form。因此,在使用它之前存储变量this,如下所示:

$('#edit-template-form').submit(function (e) { 
    e.preventDefault(); 
    var form = $(this); 
    var data = { 
     id: form.parent().val(form.data('id')), 
     name: $('#edit-template-name').val() 
    }; 
    console.log(data); 
    return false; 
}); 
+0

更多的语义使用'var form = this'。 “自我”有点无意义。 – RobG 2014-11-24 00:47:12