如何使用@Html.InputFor执行onchange事件
How execute an onchange event using @Html.InputFor
我在视图中有以下代码
@Html.InputFor(m => m.CurrentAddress.Address.Zip, new { id="currentZip", onchange = "decode_zipcode(currentZip.value,1);" }, disabled:false)
和下面的Javascript,当上面输入的值发生变化时,我想执行
var mZipArea = 0;
var vZipCode = document.getElementById('currentZip').value;
function decode_zipcode(vZipCode, vArea) {
//currentzipCode = vArea;
if (vZipCode.length == 5) {
dtdecodeZipCode(vHostUrl, vZipCode, 'return_zipdecode');
}
}
function return_zipdecode(vCity, vCounty, vState) {
if (mZipArea == 1) {
document.getElementById('currentCity').value = vCity;
document.getElementById('currentState').value = vState;
document.getElementById("currentCounty").value = vCounty;
document.getElementById('currentState').value = "United States";
}
基本上,它所做的就是接受输入(邮政编码)并返回城市、州、县和国家。当我执行代码时,我没有得到任何错误,但代码从不执行javascript。我在MVC和JavaScript方面很新,所以任何帮助都会很感激
EDIT: External JS File
<script src="/_scripts/dtAddress_v10_r1.js">
function dtaddAddressOption(selectbox, text, value) {
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;
selectbox.options.add(optn);
}
function dtCountryLookup(vHostUrl,vCountry, oState, vCallBack, vUseAbbr) {
// will return the callback of the state array and proper lables
//return should look like this
// myCallBackFunction(vCountyLabel,vCityLabel,vStateLabel,vZipLabel)
var vCountyLabel = ""
var vCityLabel = ""
var vStateLabel = ""
var vZipLabel = ""
var vBlank = ""
if (vUseAbbr == null)
{
vUseAbbr = false;
}
if (vCountry == 'Canada') {
// hide the county
vCountyLabel = "none"
vCityLabel = "City"
vStateLabel = "Province"
vZipLabel = "Postal Code"
vBlank = "Select Province"
}
if (vCountry == 'Mexico') {
// hide the county
vCountyLabel = "none"
vCityLabel = "Division / City / Town"
vStateLabel = "Province"
vZipLabel = "Postal Code"
vBlank = "Select Province"
}
if (vCountry == 'United States') {
// hide the county
vCountyLabel = "County"
vCityLabel = "City"
vStateLabel = "State"
vZipLabel = "Postal Code"
vBlank = "Select State"
}
if (vCountry == '') {
vCountry = 'United States'
// hide the county
vCountyLabel = "County"
vCityLabel = "City"
vStateLabel = "State"
vZipLabel = "Postal Code"
vBlank = "Select State"
}
//get state list
var oXML = new dtxmlObject
oXML.createXMLDocument("dealtrace")
oXML.createXMLRecord("dtrequest")
oXML.setAttributeValue("action", "901")
oXML.createXMLRecord("dtrequest_parameter")
oXML.setAttributeValue("country", vCountry)
///////////////////////////////////////////
//// POST
//////////////////////////////////////////
var objHttp = oXML.createHttpObject()
var vReturn = ""
objHttp.open("POST", vHostUrl + "/pages/ajax/dt_ajaxservice_open.aspx", 1)
objHttp.onreadystatechange = function () {
if (objHttp.readyState == 4) {
vReturn = objHttp.responseText;
oXML.destroyXML()
oXML.loadXML(vReturn)
oXML.loadXMLRecords("table")
var vRecCount = oXML.xmlRecordCount()
oState.length = 0
dtaddAddressOption(oState, vBlank, "")
for (var i = 0; i < vRecCount; i++) {
if (oXML.loadXMLRecord(i) == true) {
if (vUseAbbr == true) {
dtaddAddressOption(oState, oXML.getAttributeValue("stateabbr"), oXML.getAttributeValue("stateabbr"))
}
else {
dtaddAddressOption(oState, oXML.getAttributeValue("statename"), oXML.getAttributeValue("stateabbr"))
}
}
}
oXML.destroyXML()
if (vCallBack != "") {
vCallBack = vCallBack + "('" + vCountyLabel + "','" + vCityLabel + "','" + vStateLabel + "','" + vZipLabel + "')"
eval(vCallBack);
}
}
}
objHttp.setRequestHeader("Content-Type", "text/xml")
objHttp.send(oXML.getXML())
//////////////////////////////////////////
/// END POST
/////////////////////////////////////////
// // SUBMIT TO SERVER
// var objHttp = oXML.createHttpObject()
// var b
// var vReturn = ""
//
// b = objHttp.open("POST", vHostUrl + "/pages/ajax/dt_ajaxservice_open.aspx", 0)
// b = objHttp.setRequestHeader("Content-Type", "text/xml")
// b = objHttp.send(oXML.getXML())
// vReturn = objHttp.responseText;
// oXML.loadXML(vReturn)
// oXML.loadXMLRecords("table")
// var vRecCount = oXML.xmlRecordCount()
// oState.length = 0
// dtaddAddressOption(oState, vBlank, "")
// for (var i = 0; i < vRecCount; i++) {
// if (oXML.loadXMLRecord(i) == true) {
// dtaddAddressOption(oState, oXML.getAttributeValue("statename"), oXML.getAttributeValue("stateabbr"))
// }
// }
// oXML.destroyXML()
// if (vCallBack != "") {
// vCallBack = vCallBack + "('" + vCountyLabel + "','" + vCityLabel + "','" + vStateLabel + "','" + vZipLabel + "')"
// eval(vCallBack);
// }
}
function dtdecodeZipCode(vHostUrl, vZipCode, vCallBack) {
// will return the callback of the state array and proper lables
//return should look like this
// myCallBackFunction(vCounty,vCity,vState)
var vCounty
var vCity
var vState
if (vZipCode.length == 5) {
var oXML = new dtxmlObject
oXML.createXMLDocument("dealtrace")
oXML.createXMLRecord("dtrequest")
oXML.setAttributeValue("action", "101")
oXML.createXMLRecord("dtrequest_parameter")
oXML.setAttributeValue("zipcode", vZipCode)
///////////////////////////////////////////
//// POST
//////////////////////////////////////////
var objHttp = oXML.createHttpObject()
var vReturn = ""
objHttp.open("POST", vHostUrl + "/pages/ajax/dt_ajaxservice_open.aspx", 1)
objHttp.onreadystatechange = function () {
if (objHttp.readyState == 4) {
vReturn = objHttp.responseText;
oXML.destroyXML()
oXML.loadXML(vReturn)
oXML.loadXMLRecords("table")
if (oXML.loadXMLRecord(0) == true) {
vCity = oXML.getAttributeValue("city").replace(/^'s*|'s(?='s)|'s*$/g, "");
vCounty = oXML.getAttributeValue("county").replace(/^'s*|'s(?='s)|'s*$/g, "");
vState = oXML.getAttributeValue("state").replace(/^'s*|'s(?='s)|'s*$/g, "");
}
oXML.destroyXML()
if (vCallBack != "") {
vCallBack = vCallBack + "('" + vCity + "','" + vCounty + "','" + vState + "')"
eval(vCallBack);
}
}
}
objHttp.setRequestHeader("Content-Type", "text/xml")
objHttp.send(oXML.getXML())
//////////////////////////////////////////
/// END POST
/////////////////////////////////////////
// // SUBMIT TO SERVER
// var objHttp = oXML.createHttpObject()
// var b
// var vReturn = ""
// b = objHttp.open("POST", vHostUrl + "/pages/ajax/dt_ajaxservice_open.aspx", 0)
// b = objHttp.setRequestHeader("Content-Type", "text/xml")
// b = objHttp.send(oXML.getXML())
// vReturn = objHttp.responseText;
// oXML.loadXML(vReturn)
// oXML.loadXMLRecords("table")
// if (oXML.loadXMLRecord(0) == true) {
// vCity = oXML.getAttributeValue("city").replace(/^'s*|'s(?='s)|'s*$/g, "");
// vCounty = oXML.getAttributeValue("county").replace(/^'s*|'s(?='s)|'s*$/g, "");
// vState = oXML.getAttributeValue("state").replace(/^'s*|'s(?='s)|'s*$/g, "");
// }
// oXML.destroyXML()
} else {
if (vCallBack != "") {
vCallBack = vCallBack + "('" + vCity + "','" + vCounty + "','" + vState + "')"
eval(vCallBack);
}
}
}
</script>
尝试使用Html。我试过这个,它工作。
@Html.TextBox("txtTime" , value : null , htmlAttributes: new { @class = "form-control", onchange="alert(value);"})
相关文章:
- 如何使用javascript和PHP动态触发onChange事件
- Javascript:如何在onChange事件期间更改日期时间值
- JavaScript onchange事件未在IIS7中激发
- 如何在jQuery中为asp:textbox生成onchange事件
- 当触发下拉列表的onchange事件时,使用JavaScript提交表单
- 当select标记触发onChange事件时,从mysql数据库加载html表
- Javascript:OnChange事件,将数组变量传递给另一个函数
- 如何使select onchange事件在页面加载时发生
- 在onchange事件中,可以传递不是当前控件的参数吗
- OnChange事件未激发
- 此multi-onChange事件是否有效
- 如何在Jasmine/Rect中测试带有范围输入的“onChange”事件
- JSON无法处理OnChange事件
- 为什么我的onchange事件发生在页面加载时,而不是在触发时
- 如何在React's onChange事件
- JS:Onchange事件在启动时激活
- JavaScript onChange 事件侦听器对输入表单不起作用
- 如何在 PHP 中使用 OnChange 事件的下拉列表中选择一个选项后,对大量数据行设置分页
- 如何在jQuery中处理输入类型=文件的onchange事件
- Razor Dropdown onchange事件未触发始终未定义