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

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





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

 $("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函数?

使用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()); } }); 

因为

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

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

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

对于textarea值。