Javascript 使用onChange事件并发送两个对象作为参数会使我无法定义
我做了一个简单的函数,根据从dropdownlist中选择的项目的文本,textbox将更改其maxlength属性Javascript 使用onChange事件并发送两个对象作为参数会使我无法定义,javascript,asp.net,Javascript,Asp.net,我做了一个简单的函数,根据从dropdownlist中选择的项目的文本,textbox将更改其maxlength属性 function cambiarLength(drop, textbox) { var option = document.getElementById(drop); var texto = option.options[option.selectedIndex].text; var field = document.getElementById(text
function cambiarLength(drop, textbox) {
var option = document.getElementById(drop);
var texto = option.options[option.selectedIndex].text;
var field = document.getElementById(textbox);
if (texto == 'RUC') {
field.maxLength = 3;
}
else {
field.maxLength = 6;
}
};
代码隐藏:
TipoDoc.Attributes.Add("onChange", "javascript: cambiarLength(this, txtDoc);");
错误:
0x800a1391 - JavaScript runtime error: 'txtDoc' is undefined
如果
txtDoc
是字段的文本id,则需要将其视为字符串。您还应该删除javascript:
前缀,因为这将不允许在例程中识别此
TipoDoc.Attributes.Add("onChange", "cambiarLength(this, 'txtDoc');");
有关javascript:
前缀的使用,请参见此处:
更新
如果您使用的是WebForms,那么您将需要使用ClientID
,例如,如果txtDoc
实际上是您的代码隐藏控件,您应该执行以下操作:
TipoDoc.Attributes.Add("onChange", "cambiarLength(this, '" + txtDoc.ClientID +"');");
txtDoc是在哪里定义的?txtDoc是我用于该文本框的id。您应该使用:
this.id
。示例:TipoDoc.Attributes.Add(“onChange”,“javascript:cambiarLength(this,this.id);”
第一个选项有效,但当我执行var option=document.getElementById(drop)时;选项没有得到drop,而只是null。请在引号中尝试<代码>document.getElementById(“drop”)你好,谢谢你的帮助。我试过一些东西。Add(“onChange”、“cambiarLength(this.id,'TxtDoc');”;var option=document.getElementById(ddl);现在它确实返回了正确的值。var字段=document.getElementById(txtbox);这将返回null/未定义。由于某些原因,我无法从文本框id“txtDoc”中获取client.id。@Popplar请查看我的更新,如果您使用的是WebForms,则呈现的txtDoc id可能最终看起来像这样ct100\u MainContent\u txtDoc
,等等,在这种情况下,您需要使用.ClientID
属性。如果可能,我想在传递“this”时问一下这个问题它正在传递调用函数的对象,是否有方法传递对象txtDoc而不是传递clientID?此
将引用调用方法的对象。在这种情况下;将txtDoc作为DOMElement传递的唯一方法是这样做(我不建议这样做)cambiarLength(这是document.getElementbyId(“+txtDoc.ClientID+”)代码>好的,明白了。非常感谢你的帮助!