JQuery无法在页面上找到控件

时间:2010-12-03 10:01:24

标签: jquery

我有一个JQuery日期掩码,但是当我运行该页面时会抛出错误“Microsoft JScript运行时错误:对象不支持此属性或方法”。

现在,这个特定JQuery的工作控件将动态添加到转发器控件中。通过这个,我查看了控件的ID,它在Visual Studio中打破和停止,以及在aspx页面上显示的内容。除了JQuery在开始时具有的“#”之外,它们是相同的,不在页面上。

在我的JQuery代码中,我有:

JQuery(function($){

$('#<%=date.ClientID %>').mask("99/99/9999");

});

在找到控件时,有没有告诉JQuery不要包含“#”?我使用了UniqueID但是这会将任何下划线更改为“$”,这与页面上的内容不同。我唯一的问题是在ID的开头加上“#”符号。

有人可以帮忙吗?

由于

3 个答案:

答案 0 :(得分:2)

<asp:TextBox ID="date" runat="server"></asp:TextBox>
<script type="text/javascript">
    alert($('#<%=date.ClientID %>').attr('id')); 
</script>

此代码会提醒正确的ID,因此“#”不是问题。检查mask()是否是有效函数,以及代码是否在文本框位于页面之前运行。尝试:

$(document).ready(function(){$('#<%=date.ClientID %>').mask("99/99/9999");})  

注意:<%= ServerSideCode %>块必须在aspx页面上,它在.js文件中不起作用!

或者您可以添加Ives建议的类名,然后不需要服务器端代码。

答案 1 :(得分:1)

也许你忘了包含掩码库。

<script src="jquery.maskedinput.js" type="text/javascript"></script>

为了简化操作,您可以为控件添加一个类(class =“datemasked”),然后使用以下命令使其工作:

$('.datemasked').mask("99/99/9999");

});

答案 2 :(得分:0)

尝试拆分代码并使用Firebug进行调试。 如果你写:

var element = $('#<%=date.ClientID %>');
$(element).mask("99/99/9999");

然后逐步执行代码,您至少可以查看是否找到了该元素。您还可以列出对象上的所有可用方法,以查看掩码功能是否可用。

正如艾夫斯所说,请确保包含该库。

编辑: 从我收集到的,你的主要问题是你正在混合C#和JavaScript。 &lt;%date.ClientID%&gt;只在C#中有意义,所以你需要以某种方式将它作为参数发送给设置JavaScript的函数。

如Ives所描述的更好的解决方案是在元素上使用CssClass,然后在jQuery选择器中使用$('。classname')。这假设您只有一个元素实例,这可能不是您的情况。