JQuery

2012-03-03 6 views
11

का उपयोग कर TextArea प्राप्त करना मैं JQuery का उपयोग कर एक फॉर्म सबमिट कर रहा हूं।JQuery

$('#ask-more').on('submit', '.ask-more-form', function() { 
     var product_id = $(this).children('input[name=product_id]').val(); 
     var product_question = $(this).children('textarea[name="product_question"]').text(); 

alert(product_question); 
//submitQuestion(product_id, product_question); 

       }); 

product_id हमेशा पढ़ने के लिए है, लेकिन सवाल यह है कि उत्पाद हमेशा रिक्त है: नीचे

<form class="ask-more-form"> 
<div class="product_info_2"> 
<textarea name="product_question" class="textbox" placeholder="Ask You Question Here"></textarea> 
</div> 
<input type="hidden" name="product_id" value="1" id="product_id"> 
<a href="#" class="whiteButton submit" id="ask-more-submit-button">Ask Question</a> 
</form> 

और JQuery को पकड़ने के लिए की तरह फार्म इस तरह दिखता है प्रपत्र लग रहा है। क्या कोई मुझे बता सकता है कि यह क्यों हो रहा है?

उत्तर

16

.childrenonly goes one level down का उपयोग करना चाहिए। बजाय .find का उपयोग करें:

$('#ask-more').on('submit', '.ask-more-form', function() { 
    var product_id = $(this).children('input[name=product_id]').val(); 
    var product_question = $(this).find('textarea[name="product_question"]').text(); 
    alert(product_question); 
    //submitQuestion(product_id, product_question); 
}); 
+0

वैल() का उपयोग करने का संयोजन है और –

+0

व्यक्तिगत रूप से, मैं '.val()' का उपयोग करता हूं, लेकिन '.text()' 'textarea 'के लिए काम करेगा। डेमो के लिए http://jsfiddle.net/kfD7b/ देखें। – pete

4

आप एक <textarea> पर text() उपयोग करते समय आपको val()

var product_question = $(this).children('textarea[name="product_question"]').val(); 

यह <select> जैसे अन्य इनपुट तत्व प्रकार के लिए सच है और <input>

+1

ध्यान दिया जाना चाहिए कि इनपुट के लिए डिज़ाइन किए गए सभी तत्व, जैसे 'इनपुट', 'textarea', और' select' को' val() 'का उपयोग करके एक्सेस किया जाना चाहिए। यह उन चीजों में से एक है जो jQuery को कमाल बनाता है। – bdares

+0

@bdares अच्छा बिंदु, जोड़ा – JaredPar

0

Use .val() instead of .text()। यह चाल

+0

शायद '.val() 'और' .text()' जैसे [यहां] (http://stackoverflow.com/a/807908/1183294) के बीच के अंतर को समझाएं। – sinemetu1

+0

हाँ वास्तव में .val() इनपुट तत्व और .text के लिए काम नहीं किया था –

0

आपको children या find का उपयोग करने की आवश्यकता नहीं है। चूंकि आप पहले से प्रपत्र आप अपने आधार के लिए उपयोग कर सकते हैं कि और सिर्फ इसलिए की तरह एक मानक jQuery चयनकर्ता का उपयोग की id है: एक seocnd तर्क आप कह रहे हैं जोड़कर

var product_question = $('textarea[name="product_question"]', this).val(); 

jQuery डोम वृक्ष के रूप में केवल this उपयोग करने के लिए ।