我有一个动态表单,用户提供名称和说明:
<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函数?
答案 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的预期工作。
为所有输入返回一个值 元素,包括选择和 文字区域。对于多个选择 返回值数组。
示例:
$("input[name='name[]']").each(function() {
var index = $("input[name='name[]']").index(this);
if ($(this).val() != '') {
alert($("textarea[name='desc[]']").eq(index).val());
}
});