निम्न कोड काम नहीं करता है। मार्कअप उपयोगकर्ता नियंत्रण में है और मुझे लगता है कि यही कारण है कि क्लाइंट आईडी टेक्स्टबॉक्स आईडी के लिए गलत उपसर्ग देता है।एएसपी.Net: क्लाइंट आईडी उपयोगकर्ता नियंत्रण के कोड-पीछे में सही नहीं है
मार्कअप:
<INPUT id="txtName" runat="server" maxlength="50" style="WIDTH:100px">
<INPUT type="button" value="Find Your Doctor" id="btnFind" runat="server"
style="MARGIN-LEFT:10px;WIDTH:130px">
कोड-पीछे:
btnFind.Attributes.Add("onClick",string.Format("DoctorLink
('{0}',document.getElementById('{1}').value,{2});",
row["ZipCode"],
txtName.ClientID));
ब्राउज़र में परिणाम:
<input name="DoctorsMainArea1$ctl01$txtName" type="text"
id="DoctorsMainArea1_ctl01_txtName" maxlength="50" style="WIDTH:100px" />
<input name="DoctorsMainArea1$ctl01$btnFind" type="button"
id="DoctorsMainArea1_ctl01_btnFind" value="Find Your Doctor" style="MARGIN-
LEFT:10px;WIDTH:130px" onClick="PrepareDoctorLink('90210',
document.getElementById('DoctorsMainArea1_ctl00_txtName').value);" />
आप देख सकते हैं, JavaScript कॉल के लिए पैरामीटर DoctorsMainArea1_ctl00_txtName
है, लेकिन इनपुट तत्व की वास्तविक आईडी DoctorsMainArea1_ctl01_txtName
है।
कोई विचार यह कैसे ठीक करें? jQuery? मुझे क्या हो रहा है इसके बारे में स्पष्टीकरण में इतनी दिलचस्पी नहीं है (शायद इस पृष्ठ पर एक और नियंत्रण है जो हस्तक्षेप कर रहा है), लेकिन समस्या को हल करने का एक और मजबूत तरीका है।
आपको दस्तावेज़.getElementById का उपयोग करने की आवश्यकता क्यों है जब उसी नियंत्रण के लिए ऑनक्लिक ईवेंट जिसे आप पुनर्प्राप्त करने का प्रयास कर रहे हैं? क्या आप केवल "यह" नहीं उपयोग कर सकते हैं (जो इनपुट बॉक्स लौटाएगा। फिर आपको आईडी को आज़माने और काम करने की भी आवश्यकता नहीं है, और आपको runat = "server" की आवश्यकता नहीं होगी। – RPM1984
बटन के लिए ऑनक्लिक हैंडलर को सर्वर-साइड एक साथ रखा गया है क्योंकि मुझे ज़िप कोड और अन्य पैरामीटर चाहिए जिन्हें मैंने कोड को पढ़ने में आसान बनाने के लिए हटा दिया था। – cdonner
क्या आप क्लाइंट आईडी पढ़ने के बाद नियंत्रण पेड़ _after_ बदल रहे हैं? संभवतः – sisve