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

Mat*_*ick 8 javascript jquery

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

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

<label>Description</label><br />
<textarea name="desc[]"></textarea><br />
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用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());
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ana*_*liy 17

因为

$("textarea[name='desc[]']").get(index);
Run Code Online (Sandbox Code Playgroud)

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

$("textarea[name='desc[]']:eq(" + index + ")").val();
Run Code Online (Sandbox Code Playgroud)

对于textarea值.


tva*_*son 16

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

val()文档

为所有输入元素返回一个值,包括selection和textareas.对于多个选择,返回值数组.

例:

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