为什么.val()不是函数?

时间:2009-09-25 21:09:02

标签: javascript jquery

我有一个动态表单,用户提供名称和说明:

<label>Name</label><br />
<input type="text" name="name[]" maxlength="255" /><br />

<label>Description</label><br />
<textarea name="desc[]"></textarea><br />

我正在尝试使用Javascript验证表单,以确保如果指定了名称,则必须输入说明。

$("input[name='name[]']").each(function() {
    var index = $("input[name='name[]']").index(this);
    if ($(this).val() != '') {
        alert($("textarea[name='desc[]']").get(index).value);
        alert($("textarea[name='desc[]']").get(index).val());
    }
}

第一个alert()按预期工作但是我得到了第二个警报: $(“textarea [name ='desc []']”)。get(index).val()不是函数

有什么区别?为什么我不能使用jQuery函数?

2 个答案:

答案 0 :(得分:17)

因为

$("textarea[name='desc[]']").get(index);

是DOM对象,而不是jquery。它没有方法val。使用

$("textarea[name='desc[]']:eq(" + index + ")").val();

表示textarea值。

答案 1 :(得分:16)

使用eq(index)代替get(index),它将返回一个jQuery对象。 jQuery对象将有一个val()方法,该方法应该按照textarea的预期工作。

val() documentation

  

为所有输入返回一个值   元素,包括选择和   文字区域。对于多个选择   返回值数组。

示例:

$("input[name='name[]']").each(function() {
    var index = $("input[name='name[]']").index(this);
    if ($(this).val() != '') {
        alert($("textarea[name='desc[]']").eq(index).val());
    }
});