7

フォームに2つの非表示の入力フィールドがあります。

<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<>、JavascriptでHiddenForを更新する方法を教えてもらえますか?明らかに自動的にデータをバインドするので、これを実行したいと思います。

私のHiddenForは現在、次のようになっています。

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

これを行うためにJavascriptを変更します。

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

コンソールで次のエラーが発生します。

Uncaught TypeError: Cannot set property 'value' of null 

誰かが私がひどく間違っているところを見ることができますか?

4

3 に答える 3

11

これらのフィールドのIDにはドットではなくアンダースコアがあり、名前にはドットがあります。これを試して:

document.getElementById('Listing_Location_Latitude').value = lat;
于 2012-10-03T09:11:46.443 に答える
5

これを試して。

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

したがって、Javascriptを使用して要素を取得できます。

document.getElementById("theIdyouWant")
于 2012-10-03T09:22:44.123 に答える
3

あなたの問題はそれidが別のものになるということです。Listing.Location.Latitude名前属性です。

例えば:

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

次のように生成されます:

<input id="General_Site_Name" type="text" name="General.Site_Name" />
于 2012-10-03T09:13:50.137 に答える