2012-10-03 22 views
6

मैं अपने फार्म में दो छिपे हुए इनपुट क्षेत्र होते हैं:ASP.NET MVC 3 HiddenFor जावास्क्रिप्ट

<input type="hidden" name="lat" id="lat" value=""/> 
<input type="hidden" name="long" id="long" value="" /> 

मैं कर का पालन करके अपने मान निर्दिष्ट कर रहा हूँ:

document.getElementById('lat').value = lat; 
document.getElementById('long').value = lng; 

कर सकते हैं किसी कृपया मुझे बताओ कैसे मैं छुपा <input> फ़ील्ड को हटा सकता हूं और उन्हें @Html.HiddenFor<> से बदल सकता हूं और अपना जावास्क्रिप्ट छुपा फॉर अपडेट कर सकता हूं? मैं ऐसा करना चाहता हूं क्योंकि यह स्पष्ट रूप से डेटा को बांध देगा।

@Html.HiddenFor(m => Model.Listing.Location.Latitude); 
@Html.HiddenFor(m => Model.Listing.Location.Longitude); 

मैं जावास्क्रिप्ट यह करने के लिए बदलने के लिए::

मेरे HiddenFor वर्तमान में कुछ इस तरह दिखता

document.getElementById('Listing.Location.Latitude').value = lat; 
document.getElementById('Listing.Location.Longitude').value = lng; 

मैं कंसोल में निम्न त्रुटि:

Uncaught TypeError: Cannot set property 'value' of null 

क्या कोई देख सकता है कि मैं कहां गलत हो रहा हूं?

उत्तर

10

इन क्षेत्रों के आईडी में डॉट्स नहीं होंगे, उनके नाम डॉट्स होंगे। इसे आज़माएं:

document.getElementById('Listing_Location_Latitude').value = lat; 
+0

कि सही काम किया:

@Html.HiddenFor(m => m.Listing.Location.Latitude, new {id = "theIdyouWant"}) 

तो तुम तत्व जावास्क्रिप्ट का उपयोग कर प्राप्त कर सकते हैं। बहुत बहुत धन्यवाद। – Subby

3

आपकी समस्या यह है कि id एक और होगा। Listing.Location.Latitude नाम विशेषता है।

उदाहरण के लिए:

@Html.TextBoxFor(x => x.General.Site_Name) 

उत्पन्न के रूप में:

<input id="General_Site_Name" type="text" name="General.Site_Name" /> 
+0

आपको बहुत धन्यवाद – Subby

4

इस प्रयास करें।

document.getElementById("theIdyouWant") 
+1

आह। पता नहीं था कि मैं इस तरह एक आईडी निर्दिष्ट कर सकता था। आपका बहुत बहुत धन्यवाद। – Subby

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