2009-09-25 16 views
7

मेरे पास एक गतिशील रूप है जहां उपयोगकर्ता नाम और विवरण प्रदान करता है:.Val() फ़ंक्शन क्यों नहीं है?

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

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

मैं यह सुनिश्चित करने के लिए जावास्क्रिप्ट के साथ फ़ॉर्म को सत्यापित करने का प्रयास कर रहा हूं कि यदि नाम निर्दिष्ट है, तो एक विवरण दर्ज किया जाना चाहिए।

$("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 [name = 'desc []']")। (अनुक्रमणिका) .val() नहीं है एक फ़ंक्शन

अंतर क्या है? मैं jQuery फ़ंक्शन का उपयोग क्यों नहीं कर सकता?

+0

आपके लेबल के रूप में वे अभी हैं बल्कि बेकार हैं। उन्हें विशेषताओं के लिए "उचित" दें और संबंधित इनपुट/textarea तत्वों के साथ संबद्ध करें। – kangax

उत्तर

15

उपयोग eq(index) बजाय get(index) और यह एक jQuery वस्तु वापस आ जाएगी। JQuery ऑब्जेक्ट में एक वैल() विधि होगी जो टेक्स्टरेरा के लिए अपेक्षित काम करेगी।

val() documentation

मान चयन और textareas सहित सभी इनपुट तत्वों, के लिए दिया जाता है। एकाधिक चयन के लिए मानों की एक सरणी दिया जाता है।

उदाहरण:

$("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); 

डोम वस्तु, नहीं jQuery है। यह विधि वैल नहीं है।

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

टेक्स्टरेरा मान के लिए उपयोग करें।

संबंधित मुद्दे