HTMLInputElement没有方法'parent'

时间:2013-02-21 08:05:43

标签: jquery

我的页面上有两个非常相似的表单。

我在jquery中进行简单验证,在使用ajax将数据发送到使用数据的php处理程序之前检查每个字段是否有值。

由于表单之间的相似之处,我无法知道提交了哪个表单,所以我想我会尝试通过表单容器div上的id来区分

<div name="contactform2" class="form">
    <div width="100%" class="con2">

        <div class="lable">
            <label for="first_name">First Name *</label>
        </div>
        <input  type="text" name="first_name" class="span4">

        <div class="lable">
            <label for="email">Email Address *</label>
        </div>
        <input  type="text" name="email" class="span4">

        <div class="lable">
            <label for="telephone">Contact Number *</label>
        </div>
        <input  type="text" name="telephone" class="span4">

        <div class="lable">
            <label for="comments">Message *</label>
        </div>
        <textarea  name="comments" rows="8" class="span4"></textarea>

        <input type="submit" value="Submit" class="btn btn-success">
    </div>
</div>

表单之间的唯一区别是,其中一个表单中有<select>而另一个表单中没有。

我的jquery看起来像这样:

$('input[type=submit]').click(function() {
    var parentname = this.parent('div').attr('name');
    console.log('Form used: ' + parentname);

    var fname = 0,
        email = 0,
        tel = 0;
        comm = 0;

    // Validate data
});

我想也许我的选择器错了,因为我通常选择id / class / tagname,所以我甚至不确定它是否有效。

有人可以提出替代方案吗?

1 个答案:

答案 0 :(得分:8)

.parent()是一个jQuery函数,你忘了将this包裹在$()中。

var parentname = $(this).parent('div').attr('name');
console.log('Form used: ' + parentname);

你应该看一下.closest()