当我使用母版页时,为什么这个JS会失败? (ASP.NET)

我目前正在开发一个需要使用大量AJAX AutoCompleteExtenders的项目,而且它们一直运行良好 - 但现在我正在整理代码并实现母版页,我遇到了问题。我有这个JS:
$find('txtName')._onMethodComplete = function(result, context) {

$find('txtName')._update(context, result, false);
webservice_callback(result,context);
};
当我加载页面时,会发生与该代码段相关的错误: Microsoft JScript运行时错误:“null”为null或不是对象 重申一下,这只发生在我有一个奇怪的原因的母版页时。有任何想法吗?     
已邀请:
您需要使用
<%=txtName.ClientID%>
,因为在使用母版页时,您的ID将被损坏,以避免母版页和aspx / usercontrols等之间的名称冲突。 但请注意,为了能够使用
<%=
,您必须在ASP.NET标记代码中包含JS。这可以通过IIS
#include
而不是使用
script
的src来完成。 例:
<!-- #Include virtual=".JSYourJSFileWithASPNETMarkup.js" -->
    
在您的网页上尝试查看来源,并确保&lt; input&gt;仍然命名为txtName。有时使用母版页,名称会发生​​变化。     
你能试试这个: ('&lt;%= txtName.ClientID>')._ onMethodComplete = function(result,context){     
如果您正在使用.NET 4,那么您可以在页面指令中添加
ClientIDMode="Static"
,这将告诉ASP.NET保持它的元素ID的笨拙。     
当您使用母版页时,您的控件的ID会发生变化,因此您无法在Javascript中使用相同的ID,而是可以像这样修改您的选择器:$('input [id * =“txtName”]')现在它找到所有具有包含txtName的id的控件。你可以使用这种不同的选择器。 这是一个有用的链接     

要回复问题请先登录注册