2016-03-01 46 views
-1

我必須閱讀更改事件中html.TextBoxFor字段的值。從Javascript讀取MVC @ Html.TextBoxFor

現在我有這個元素在我的MVC形式:

@Html.TextBoxFor(m => m.Pod, new { 
    @class = "inputStyle180", @title = "Pod", @onchange = "onChangePod();" 
}) 
} 

而這個JavaScript函數:

function onChangePod() { 
    var Trovato = false; 
    //var sPod = document.getElementById("Pod").value; 
    var Pod = $('#Pod').val(); 
    alert(sPod); 
    $.getJSON('@Url.Action("VerificaDatiUtenza", "EELAutoletture")', { 
     Pod: Pod 
    }, function(data) { 
     $.each(data, function(i, item) { 
     Trovato = true; 
     if (i == "Denominazione") { 
      $('#Denominazione').val(item); 
     } 
     if (i == "Localita") { 
      $('#Localita').val(item); 
     } 
     }); 
    }); 
    if (Trovato == false) { 
     alert("ATTENZIONE! Pod non in anagrafica"); 
    } 
    }; 

但變量Pod爲空

+0

'變種波德= $(」 #Pod').val();'可以正常工作(除非你有多個元素與'id ='「Pod」') –

+0

@Stephen Muecke如果'Pod'是一個複雜模型的嵌套屬性,將會包含一個前綴所以'$('#Pod')。val()'不起作用。我認爲在這種情況下使用'$(「#@ Html.IdFor(m => m.Pod)」)。val()'會更好, –

+0

@AlexArt。,不!如果它是一個嵌套屬性,那麼'@ Html.TextBoxFor(m => m.Pod,。)'會拋出一個異常 - 它需要是'@ Html.TextBOxForm(m => m.SomePropery.Pod .. .. )'。 OP的代碼完美工作,除非有其他元素使用'id =「Pod」' - 這種情況下只能找到第一個 –

回答

0

您可以將值發送到作爲輸入:

@Html.TextBoxFor(m => m.Pod, new { @class = "inputStyle180", @title = "Pod", @onchange = "onChangePod(this.value);" })} 

function onChangePod(Pod) { 
... 
} 
0

你可以做這樣的..創造@ Html.TextBoxFor ..

@Html.TextBoxFor(m => m.Pod, new { @id="Pod",@class = "inputStyle180", @title = "Pod", @onchange = "onChangePod();" })} 

這裏ID是你的函數方法

function onChangePod() { 
var Trovato = false; 
var Pod = $('#Pod').val(); 
alert(Pod); 
$.getJSON('@Url.Action("VerificaDatiUtenza", "EELAutoletture")', { Pod: Pod }, function (data) { 
    $.each(data, function (i, item) { 
     Trovato = true; 
     if (i == "Denominazione") { 
      $('#Denominazione').val(item); 
     } 
     if (i == "Localita") { 
      $('#Localita').val(item); 
     } 
    }); 
}); 
if (Trovato == false) { 
    alert("ATTENZIONE! Pod non in anagrafica"); 
} 
}; 
+0

OP的'TextBoxFor )'用法已經添加了'id =「Pod」' - 再次這樣做毫無意義。 –

+0

哪一個你被稱爲id ..你的意思是作爲id ** m => m.Pod ** – praveen

+0

是的,'@ Html.TextBoxFor(m => m.Pod,...)'產生'' –

0

既然你已經使用內嵌腳本,你可以使用Html.IdFor幫手得到一個爲Pod財產 生成的ID所以喲ca n使用類似於

function onChangePod() { 
    var Trovato = false; 
    var Pod = $("#@Html.IdFor(m=>m.Pod)").val(); 
    alert(Pod); 
    $.getJSON('@Url.Action("VerificaDatiUtenza", "EELAutoletture")', { Pod: Pod }, function (data) { 
    $.each(data, function (i, item) { 
     Trovato = true; 
     if (i == "Denominazione") { 
      $('#Denominazione').val(item); 
     } 
     if (i == "Localita") { 
      $('#Localita').val(item); 
     } 
    }); 
    }); 
    if (Trovato == false) { 
    alert("ATTENZIONE! Pod non in anagrafica"); 
    } 
}; 
0

使用name屬性獲取Pod輸入。

var Pod = $('input[name="Pod"]').val(); 
0

當您通過JavaScript獲得項目的id時,您必須爲此設置Id。 ($("#Pod").Val())。 無論如何,你有2個選項。

1)您可以通過名稱前得到項目:$("input[name="Pod"]).Val()

2)改變你查看:

@Html.TextBoxFor(m => m.Pod, new {@class = "inputStyle180", @title = "Pod", 
@onchange = "onChangePod();", @id="Pod"}) 

然後用

$("#Pod").Val()

+0

請添加一些解釋。目前,您的答案被標記爲「低質量」,可能會被刪除。 –