2009-09-25 73 views
7

我有一個動態的形式,其中用戶提供的名稱和說明:爲什麼.val()不是函數?

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

第一個警報()按與第二警報然而有望獲得: $( 「textarea的[名稱= '遞減[]']」)得到(指數).VAL()不是。功能

有什麼區別?爲什麼我不能使用jQuery函數?

+0

你的標籤,而沒有用,因爲他們現在是正確的。賦予它們適當的「for」屬性,並與相應的input/textarea元素相關聯。 – kangax 2009-09-25 21:15:28

回答

15

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

由於

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

是DOM對象,而不是jquery的。它沒有方法val。使用

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

for textarea value。

相關問題