2011-02-18 18 views
9

प्राप्त करने के लिए JQuery का उपयोग करें मैं चयन से मूल्य को पकड़ने और इसे इनपुट में पेस्ट करने के लिए नीचे एक टैग प्राप्त करने का प्रयास कर रहा हूं।भाई बहन

<td class="ms-formbody" style="width:385px"> 
    <input name="ctl00$PlaceHolderMain$dlFields$ctl00$txtSource" type="text" id="ctl00_PlaceHolderMain_dlFields_ctl00_txtSource" class="ms-input" /> 
    <select name="ctl00$PlaceHolderMain$dlFields$ctl00$ddlSourceFields" id="ctl00_PlaceHolderMain_dlFields_ctl00_ddlSourceFields" class="ms-input"> 
     <option value="Some Field Name 1">Some Field Name 1</option> 
     <option value="Some Field Name 2">Some Field Name 2</option> 
     <option value="Some Field Name 3">Some Field Name 3</option> 
     <option value="Some Field Name 4">Some Field Name 4</option> 
    </select> 
    <a href="javascript: appendField();">append</a> 
</td> 

मुझे लगता है कि भाई बहनों को कैसे पकड़ना है, यह समझने में प्रतीत नहीं होता है। मैंने $(this).siblings("input").val() की कोशिश की लेकिन वह गलत वेबपृष्ठ त्रुटि 'parentNode.firstChild' is null or not an object

$(this).prev().prev().val() का प्रयास किया और यह वापस अपरिभाषित आता है। इन चीजों को पकड़ने का सबसे अच्छा तरीका क्या है?

धन्यवाद, डेविड

उत्तर

13

आपकी समस्या स्टेम आपके दृष्टिकोण से है। फ़ंक्शन को कॉल करना सीधे आप जो भी उम्मीद कर रहे हैं वह नहीं करेगा, जिसमें < > टैग का प्रतिनिधित्व करने वाला एक jquery ऑब्जेक्ट होना चाहिए। एक फ़ंक्शन को सीधे कॉल करने के बजाय आप click ईवेंट < पर > पर प्रतिक्रिया देने के लिए फ़ंक्शन पंजीकृत कर सकते हैं।

पहले, अपने लिंक एक आईडी दे:

<a href="#" id="appendSelect">append</a> 

तब का प्रयोग कर एक jQuery के साथ अपने appendField() समारोह की जगह का चयन है कि इस दृष्टिकोण के साथ click

$(document).ready(function() { 
    $("#appendSelect").click(function() { 
    var $thatInput = $(this).siblings("input"); 
    var $selectValue = $(this).siblings("select").val(); 
    $thatInput.val($selectValue); 
    }) 
}); 

का जवाब $(this) अपने < एक > का प्रतिनिधित्व करेंगी ।

आप देख सकते हैं कि जावास्क्रिप्ट डिबगिंग कंसोल (क्रोम डिफ़ॉल्ट रूप से एक है, और आप फ़ायरफ़ॉक्स पर फ़ायरबग का उपयोग कर सकते हैं) का उपयोग कर एक बड़ी गहराई के बारे में बात कर रहे हैं। अपने मूल कार्य आधारित दृष्टिकोण को फिर से प्रयास करें और console.log($(this)); कथन जोड़ें। आपको इसे एक DOMWindow ऑब्जेक्ट को प्रिंट करना चाहिए। अब click फ़ंक्शन में एक ही लॉग स्टेटमेंट डालें और आप देखेंगे कि jQuery ने आपको $ (यह) दिया है जो आपको उम्मीद है कि आप क्या चाहते हैं।

+0

आपकी मदद के लिए धन्यवाद, यह वास्तव में सहायक था।आपके नेतृत्व के बाद, मैंने अपने टैब को एक div के साथ लपेट लिया और फिर उसे पकड़ लिया और यह आश्चर्यजनक ढंग से काम किया $ (दस्तावेज़) .ready (function() { $ ("# myList a")। क्लिक करें (function() { var $ selectValue = $ (this) .siblings ("select")। val(); var $ thatInput = $ (this) .siblings ("input"); $ thatInput.val ($ selectValue); }) }); –

+0

मदद मिली है –

0

उपयोग .children() या .find()

.children केवल माता-पिता के प्रत्यक्ष बच्चों के लिए लग रहा है, माता पिता के नीचे सभी स्तरों पर दिखता है पाते हैं।

$('.ms-formbody').find('select').val();

0

यह केवल इन आईडी के लिए काम करेंगे, लेकिन आप उन्हें आसानी से बदल सकते हैं:

$('#ctl00_PlaceHolderMain_dlFields_ctl00_txtSource').val($('#ctl00_PlaceHolderMain_dlFields_ctl00_ddlSourceFields').val()); 
0

इस कोशिश ...

$(this).parent().find('input:first').val(selectedOptionValue); 
+0

, काम नहीं किया ऊपर पिछले पोस्ट देखते हैं, मुझे लगता है कि यह मेरे दृष्टिकोण के साथ एक मुद्दा –

4

कोशिश:

$(this).parent().children("input:first").val(); 
+0

, काम नहीं किया ऊपर पिछले पोस्ट देखते हैं, मुझे लगता है कि में एक समस्या है मेरी दृष्टिकोण –

1

एपेंडफील्ड विधि $ (इस) तक पहुंच नहीं है।

यहाँ काम कर कोड है: http://jsfiddle.net/NBf4d/2/

+0

JSFiddle आश्चर्यजनक है! मैंने कोड को थोड़ा अधिक मेरे पर्यावरण में संशोधित किया। मैं यह उल्लेख करना भूल गया कि यह एक दोहराव वाली पंक्ति है, और मैंने किसी अन्य jquery नमूने का उपयोग करके अद्यतन किया। अभी भी इसे tweaking। –

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