我有一个方法的参数,应该是一个字符串,我不能想出如何<%* .ClientID%>像那样的变量。由于它是一个变量,我不能用引号括起来,因为它将按字面意思进行,当我像变量一样使用参数时(正如你应该的那样)我得到一个ASP错误,说它在上下文中不存在(从字面上读它。)
任何线索?
谢谢你们
代码示例
function next(currentControl, maxLength, nextControl) {
if (document.getElementById( currentControl<%=.ClientID %>).value.length >= maxLength) {
document.getElementById( nextControl<%=.ClientID %>).focus();
}
return false;
}
致电示例
wValCode.Attributes.Add("onkeyup","next('wValCode','3','wValThree')");
我知道可能是添加属性的原始方式,但它是如何向我解释的。我在飞行中拿起了ASP,所以不要太难我;)
静态HTML
<input name="ctl00$ContentPlaceHolder2$wValThree" type="text" id="ctl00_ContentPlaceHolder2_wValThree" style="width:33px;">
这是我在静态html中可以找到的唯一相关参考。它会被添加到一个ASP复杂的js文件中吗?
答案 0 :(得分:1)
鉴于您正在从代码中绑定关键事件,您可以在执行绑定时引用客户端ID:
wValCode.Attributes.Add("onkeyup","next('" + wValCode.ClientID + "', '3', '" + wValThree.ClientID + "')");
然后,您已将客户端ID作为参数传递给javascript函数
function next(currentControl, maxLength, nextControl) {
if (document.getElementById(currentControl).value.length >= maxLength) {
document.getElementById(nextControl).focus();
}
return false;
}
更好的选项是使用this关键字将对调用对象的引用作为第一个参数传递:
//code behind
wValCode.Attributes.Add("onkeyup","next(this, '3', '" + wValThree.ClientID + "')");
//javascript function
function next(currentControl, maxLength, nextControl) {
if (currentControl.value.length >= maxLength) {
document.getElementById(nextControl).focus();
}
return false;
}
答案 1 :(得分:0)
尝试将点移动到ASP.NET标记之外:
currentControl.<%= ClientID %>