我在ASP.NET中使用C#
我有一个HTMLSelect元素,当我更改select的索引时,我正在尝试调用javascript函数。
riskFrequencyDropDown是在C#代码后面动态创建的:
riskFrequencyDropDown.Attributes.Add("onchange", "updateRiskFrequencyOfPointOnMap(" + riskFrequencyDropDown.ID.Substring(8) + "," + riskFrequencyDropDown.SelectedValue +");");
但它不会调用我页面上的javascript函数。当我删除参数它工作正常,但我需要传递这些参数,以确保正常的功能。
非常感谢对此问题的任何见解
答案 0 :(得分:4)
您的参数是数字还是字母数字?如果它们包含字母,您需要在javascript中引用它们。请注意下面添加单引号。
riskFrequencyDropDown.Attributes.Add("onchange",
"updateRiskFrequencyOfPointOnMap('"
+ riskFrequencyDropDown.ID.Substring(8)
+ "','"
+ riskFrequencyDropDown.SelectedValue +"');");
答案 1 :(得分:0)
tvanfosson的回复回答了你的问题。另一个需要考虑的选择(可能会让你不再受此影响):
在C#中创作更简单的javascript:
riskFrequencyDropDown.Attributes.Add("onchange",
"updateRiskFrequencyOfPointOnMap(this);");
然后,在javascript函数本身(在onchange上调用)中,从dropDown对象中获取所需的值:
function updateRiskFrequencyOfPointOnMap(dropDown) {
var riskFrequencyId = dropDown.ID.Substring(8);
var riskFrequencyValue = dropDown.SelectedValue;
// etc
}
这个设计的一个不太明显的好处:如果你改变了使用下拉对象的方式(可能是子串(6)和子串(8)),你不必改变你的C# - 你只有更改您的JavaScript(并且只在一个地方)。
答案 2 :(得分:0)
我会建议使用string.Format和单引号
riskFrequencyDropDown.Attributes.Add("onchange",string.Format("updateRiskFrequencyOfPointOnMap('{0}','{1}');",riskFrequencyDropDown.ID.Substring(8),riskFrequencyDropDown.SelectedValue ));
答案 3 :(得分:0)
我建议使用Lance的答案。这是因为在调用attribute.add时调用所选值将意味着onchange将使用所选值。
让我们说ddl包含(“One”,“Two”,“Three”)和默认选择“One”。每次调用ddl onchange时,updateRiskFrequencyOfPointOnMap选择值参数将包含“One”(即使选择“Three”)。
如果那是您的预期动作,那就是对所选值做一些事情。